はじめに
前回の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ざっくりまとめもとりあえず今回で終了です。お付き合いありがとうございました。
コメント