Docker Composeとは
- 複数のDockerコンテナをまとめて管理できるツールのこと
- まとめて起動したり、終了させたりできる
- dockerコマンドはだいたいdocker-composeコマンドとして使える
- 設定ファイルはyml形式で記述される
- docker-compose.yml
docker-compose.ymlファイルの基本項目
# 例
version: '3.7'
services:
web:
build: httpd/Dockerfile
ports:
- "8080:80"
volumes:
- httpd/code:/code
depends_on:
- db
db:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: my-secret-pw
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
version
- Docker Compose自体のバージョンを指定する
Docker自体のバージョンとは異なる点に注意
services
- 各コンテナごとに設定を定義する
- 設定項目
- image
- 使用するDockerイメージを指定
- build
- 使用するDockerfileを指定
- imageかこちらのどちらかは必須で指定する、基本的にbuild推奨(=Dockerfileを使おうねということ)
- container_name
- コンテナに任意の名前を付ける
- 設定推奨
- ports
- ポートの解放とポートフォワーディングを設定
- {外部公開ポート}:{コンテナ内部ポート}
- volumes
- ホストとコンテナでディレクトリを共有する(マウント設定)
- コードや設定ファイルなどに使用
- environment
- 環境変数を設定
- DBコンテナの場合、ユーザー名やパスワードなど
- depends_on
- 他のサービスに依存する場合は指定
- restart
- コンテナが異常終了した場合の再起動ポリシーを指定
- image
- ここで定義したservicesの名称はdocker-compose.yml内でそのコンテナを指すキーとして使用できる(例のdepends_onを参照)
docker-composeコマンド
docker-composeでは基本的にdockerと同じコマンドが使えますが、固有のものもあります。
よく使うものを以下で紹介します。
docker-compose up -d
- docker-compose.ymlで管理する各コンテナを起動する
- -dオプションを使用し、デタッチモード(バックグラウンド)で実行するのが一般的
docker-compose down
- docker-compose upの反対
- docker-compose.ymlで管理する全コンテナに対し、docker stopとdocker rmを一括実行する
docker-compose restart
- docker-compose.ymlで管理するコンテナを全て再起動する
docker-compose logs
- 起動中のコンテナのログを表示する
docker-compose run
- docker-compose.ymlで管理するコンテナを一つ指定してコマンドを実行する
- イメージをビルドする前でも実行可能なので、フレームワークのインストールなどに使われる
docker-compose run {サービス名} {実行したいコマンド}
docker-compose ps
- docker-compose.ymlで管理されているコンテナを一覧表示する
参照