はじめに
前回のDockerfileの内容に引き続き、今回はDocker Composeについてざっくりまとめます。
例によって、Docker Composeのページに詳細があります。
Docker Composeとは
Docker composeとは、複数のコンテナを定義し実行するためのツールです。これを使うことで、各コンテナの起動や停止が簡単になったり、それぞれの起動の際のオプションの設定での間違いが減ります。
利用するためにはdocker-compose.ymlというファイルにDockerビルドやコンテナ起動のオプションなどを含め、複数のコンテナの定義を書いておき、docker-compose upという形で実行をします。
具体的にdocker-compose.ymlの内容は、
- Dockerイメージをビルドするための情報(使用するDockerfile、イメージ名など)
- コンテナ起動するための情報(ホストとの共有ディレクトリ設定やポートフォワードなどの起動オプションなど)
- 使用するDockerネットワーク
などが書かれます。
「米国AI開発者がゼロから教えるDocker講座」で実際に作成したdocker-compose.ymlでは、RubyとprogreSQLを使用しました。以下のようなものになります(一部改変)。
version: '3'
volumes:
db-data:
services:
web:
build: .
ports:
- '3000:3000'
volumes:
- '.:/[dir]'
environment:
- 'DATABASE_PASSWORD=xxx'
tty: true
stdin_open: true
depends_on:
- db
links:
- db
db:
image: postgres
volumes:
- 'db-data:/var/lib/postgresql/data'
environment:
- 'POSTGRES_HOST_AUTH_METHOD=trust'
servicesの中のweb:とdb:がそれぞれRubyとprogreSQLのコンテナに相当します。web:やdb:以下にある、build:やports:、environment:が定義にあたり、これらを元にコンテナが作成されます。
Docker Composeのコマンド
docker-compose build
docker bulid [build contexts]に当たります。docker-compose.ymlに[build contexts]もあるので、docker-compose buildだけで実行できます。
docker-compose up
docker run [image]に当たります。docker-compose buildと同じく、このコマンドだけで実行できます。
docker-compose ps
docker psに当たります。docker-composeの状態を表示します。
docker-compose down
これを実行すると、docker-composeをstopし、rm(削除)します。
docker-compose exec [service]
docker exec [service]に当たります。[service]には、上記でいうwebやdbが入ります。
dockerコマンド、docker-composeコマンド対応早見表
| dockerコマンド | docker-composeコマンド |
|---|---|
| docker bulid [build contexts] | docker-compose build |
| docker run [image] | docker-compose up |
| docker ps | docker-compose ps |
| docker exec [service] | docker-compose exec [service] |
| docker stop & docker rm | docker-compose down |
おわりに
今回はDocker Composeについてざっくりまとめました。Docker Composeをつかうとコマンドを毎回入れる手間が減ったりと、手間が減るので有効に使うと便利になります。
①〜④まで続いたDockerざっくりまとめもとりあえず今回で終了です。お付き合いありがとうございました。




コメント