docker compose の使い方
まとめて動かす
書き方
docker compose up -d [--build] docker compose ps / logs [サービス] docker compose exec サービス コマンド docker compose down [-v] docker compose config
compose.yaml に書いた複数のコンテナ(サービス)・ネットワーク・ボリュームを、まとめて作って動かします。サービス名で互いを呼べます。
よく使うオプション
| オプション | 意味 |
|---|---|
up -d | 全部のサービスを作って裏で動かす(--build でイメージも作り直す) |
down | 止めて、コンテナとネットワークを消す(-v でボリュームも消す) |
ps | サービスの状態を出す |
logs -f サービス | ログを出し続ける |
exec サービス コマンド | 動いているサービスの中でコマンドを動かす |
config | 変数を埋めたあとの compose.yaml を出す(書き間違いの確認) |
-f ファイル | compose.yaml 以外のファイルを使う |
-p 名前 | プロジェクト名を決める(既定はディレクトリの名前) |
例
$ docker compose up -d[+] Running 3/3
✔ Network myapp_default Created
✔ Container myapp-db-1 Started
✔ Container myapp-web-1 Startedcompose.yaml に書いたサービス・ネットワーク・ボリュームをまとめて作り、裏で動かします。
$ docker compose psNAME IMAGE SERVICE STATUS PORTS
myapp-db-1 postgres:17 db Up 2 minutes 5432/tcp
myapp-web-1 myapp-web web Up 2 minutes 0.0.0.0:8080->3000/tcpこのプロジェクトのサービスの状態を出します。
$ docker compose logs -f web
web のサービスのログを出し続けます。サービス名を書かないと全部のログが混ざって出ます。
$ docker compose config --servicesdb
webcompose.yaml に書いたサービスの名前を一覧にします。書き間違いがあるとここでエラーになるので、up の前の確認に使えます。
$ docker compose down
コンテナとネットワークを消します。名前付きのボリュームは残るので、データは消えません。
よくある間違い・注意
- 古い docker-compose(ハイフン付き)は v1 で、もう更新されていません。今は docker compose(スペース)を使います。
- compose.yaml を書き換えても、動いているコンテナには効きません。docker compose up -d をもう一度打つと、変わったものだけ作り直されます。
- down -v はボリュームも消すので、データベースの中身がなくなります。
実際に打って練習する
Docker コースの Lv35「船団の設計図 compose.yaml」で覚えます(第5章 船団(Compose))。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
Lv1〜7 はログインすると無料で試せます(それより先はゴールド以上のプランで遊べます)。