Dockerを使って環境構築している時に、
docker-compose up -d
コマンド
docker-compose build
コマンド
どちらを実行するか分からないことが多かったので、
調べたことをここにアウトプットしておきます。
前提
Dockerfile内のimageを参考にし、docker-compose.ymlで構築します。
各種ファイルの変更時の反映について
docker-compose.yml の内容を変更した場合
イメージ:再構築の必要なし:
コンテナ:再構築の必要あり:docker-compose up -d
Dockerfile の内容を変更した場合
イメージ:再構築の必要あり:docker-compose build
コンテナ:再構築の必要あり:docker-compose up -d
ミドルウェアなどの設定の内容を変更した場合
イメージ:再構築の必要あり:docker-compose build
コンテナ:再構築の必要あり:docker-compose up -d
docker-compose up -d の -d について
ちなみにdocker-compose up -d
についている -d オプションは、detachedのことです。
Docker Composeファイル(通常は docker-compose.yml)に定義されたサービス(コンテナ)を起動しますが、デフォルトではターミナルにログを表示します。
しかし、-d オプションを使用することで、コンテナをバックグラウンドで起動し、ログの表示を行わずにコントロールをターミナルに返します。
docker-compose up -d
このコマンドを使うことで、Docker Composeファイルに定義された全てのサービスがバックグラウンドで起動され、コンテナのログは表示されません。
- メリット
この方法でコンテナを起動することで、ターミナルをブロックすることなく他の作業を続けることができます。
docker-compose up --build
初回のdocker-compose up
はbuildも同時に行なってくれますが、
(↑改めて勉強になりました)
2回目からはbuildは行われません。
どちらも実行したいときには、上記のようにbuildしてからupでももちろん問題ないですが、
docker-compose up --build
コマンドを使えば、同時に実行できるので是非活用してみてください。
参考