私はdocker
で自分のコンテナを実行するのにdocker-compose
を使用します。私は2つのサービスを持っています:celerybeat
とweb
の1つ(私は多くの人がいますが、私の問題があるのでこれらのサービスだけを考えています)。ドッカーの共有イメージボリュームのマウントエラー
docker-compose.yml
ファイルには、次のようになります。
.
.
.
celerybeat:
image: web-image
volumes:
- /home/ubuntu/celerybeat:/code/celerybeat
command: >
/bin/ash -c "su -m celery -c 'celery -A <application_here> beat -s /code/celerybeat/celerybeat-schedule'"
web:
image: web-image
volumes:
- /home/ubuntu/celerybeat:/code/celerybeat
command: >
<some_command_to_run_server>
私Dockerfile
私は、適切なアクセス許可
注のためにこれらのコマンドを追加しました:私のコンファイル構造では、私はボリュームのマウントを提供してきた上に書かれました両方のコンテナ(ただし、実際には私は一度に1つずつ使用しています)を使用して、何度でも作成ファイルを書き込まないようにします。。
問題は実際にはここだけです。技術的には、ボリュームマウントはセロリビートサービスでのみ提供する必要があります。セルフリービートドッカーサービスでcelerybeat-schedule
のボリュームマウントを書くと、permission denied
となります。一方、Webサービスでボリュームマウントコマンドを書くと、celerybeatサービスがうまく始まります。誰も私を説明することができますここで何が起こっている?私はこれのための修正が必要です。
Webサービスのcelerybeatサービスでボリュームマウントコマンドを記述すると、うまく起動すると、どのコマンドが正確に実行されていますか? – bluescores
私はまだこれを理解することはできませんが、問題を修正しました。問題は、私がセロリのユーザーとしてビートサービスを開始するコマンドを実行していたことでした。しかし、 'su -m celery -c'ビットを追加せずにサービスを開始したとき、それはうまくいった。なぜこの問題が発生していますか? –