はじめに
Railsなどを中心に勉強中のエンジニア初心者が他の記事を参考にしたり、実際に実装してみたりして、アウトプットの一環としてまとめたものです。
間違っていることもあると思われるので、その際は指摘いただけると幸いです。
docker-composeコマンドについて
複数のコンテナをまとめて起動するきや、オプションが重なりdocker runコマンドが長くなるときなどにdocker-composeコマンドを使用する。
docker-compose.ymlやdocker-composeコマンドを使用することで、複数のコマンドを簡単に起動する事ができる
docker-compose build (docker build <build contexts>に対応)
サービス(webやdb)のビルドを実行する。
build contextsはdocker-compose.ymlに記載されているため、docker-compose buildのみでOK
$ docker-compose build
docker-compose up(docker run <image>に対応)
コンテナを起動する。docker run実行時のオプションなどはdocker-compose.ymlに記載されているため、docker-compose upのみでOK。
docker-compose upはbuildも同時に実行されるため、imgaeが作られていない場合はdockerfileを基にしてbuildする。
2回目以降はimageが既に存在しているため、buildは実行されずrunのみ実行される。
dockerfileを更新した場合は古いimageでbuildされてしまうため注意が必要。その場合は--buildオプションをつけて実行する。
バックグラウンドで実行したい場合は-dオプションを付けて起動する。
$ docker-compose up
docker-compose ps(docker psに対応)
docker-compose.ymlに記載されているコンテナの状態を確認する事ができる。
# docker-compose psの実行
$ docker-compose ps
>
Name Command State Ports
---------------------------------------------------------------------------------------
product-register-db-1 docker-entrypoint.sh postgres Up 5432/tcp
product-register-web-1 irb Up 0.0.0.0:3000->3000/tcp
# docker psの実行
$ docker ps
>
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4f12786c4d29 product-register_web "irb" 40 seconds ago Up 39 seconds 0.0.0.0:3000->3000/tcp product-register-web-1
f0f4da422f87 postgres "docker-entrypoint.s…" 40 seconds ago Up 39 seconds 5432/tcp product-register-db-1
docker-compose exec <service> <command> (docker exec <container> <command>に対応)
docker-compose実行時に、指定したサービス名のコンテナにコマンドを実行する事ができる。
# docker-compose execを実行
$ docker-compose exec web bash
>
root@4f12786c4d29:/product-register#
$ exit
> コンテナを抜ける
# docker execの実行(再度コンテナに入る場合)
$ docker exce -it product-register-web-1 bash
>
root@4f12786c4d29:/product-register#
docker-compose up --build
--buildオプションをつけると、再度buildしてからrunする。
dockerfileに変更を加えた場合はimageを作り直す必要があるため、--buildオプションを付けて実行するとよい
$ docker-compose up --build
docker-compose down
コンテナをstopして削除する。一度リセットしてやり直したい場合などに実行する。
# docker-compose downを実行
$ docker-compose down
>
Stopping product-register-web-1 ... done
Stopping product-register-db-1 ... done
Removing product-register-web-1 ... done
Removing product-register-db-1 ... done
Removing network product-register_default
最後に
いかがでしたでしょうか。
今回はdocker-composeコマンドについてまとめてみました。
ここ違うよ!でしたり、こうした方がいいよ!などがあればコメントいただけると幸いです。
他にも下記のような記事を投稿しております。
興味がありましたら、ぜひご覧ください。