はじめに
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コマンドについてまとめてみました。
ここ違うよ!でしたり、こうした方がいいよ!などがあればコメントいただけると幸いです。
他にも下記のような記事を投稿しております。
興味がありましたら、ぜひご覧ください。