13

我慢してください。Docker の初心者です。

CodeDeployを使用して、Docker コンテナー (デタッチ) を AWS EC2 レジストリにデプロイしています。デプロイ時に、いくつかの環境変数などを設定した後、次のコマンドが実行されます。

exec docker run -d ${PORTS} -v cache-${CACHE_VOLUME} --env-file $(dirname $0)/docker.env --tty "${IMAGE}:${TAG}"

コンテナは、EC2 Container Service に配置され、タグ付けされたイメージを実行します。これまでのところ問題はありません。

これは PHP アプリケーション (具体的には Symfony2 アプリケーション) であるため、通常、デプロイ時にデータベースの移行を実行するには、次のコマンドを発行する必要があります。

 php app/console doctrine:migrations:migrate --no-interaction

さて、コンテナを実行したまま「docker run...」中にこのコマンドを実行する必要はありますか、それともこのコマンド専用に別のコンテナを実行する必要がありますか?

どうもありがとう!

4

3 に答える 3

15

entrypointを作成する必要があります。このスクリプトは、コンテナの起動時に実行されます。

entrypoint.sh ファイル:

#create or update db
./waitforit.sh <DB_HOST>:<DP_PORT> -t 30
php app/console doctrine:migrations:execute 

# start apache
apache2-foreground

データベース起動時に待機するスクリプトです

于 2017-01-11T13:34:00.747 に答える
1

私は次のようにします:

docker-compose exec [containerID] ./app/console migrations:migrate --no-interaction
于 2017-01-11T13:51:58.790 に答える