compose.yamlを書く
Composeでは、サービスをYAML形式で宣言します。次の例はNginxとRedisを別サービスとして起動する構成です。
services:
web:
image: nginx:alpine
ports:
- "8080:80"
depends_on:
- cache
cache:
image: redis:alpinewebとcacheがサービス名です。Composeは同じプロジェクト用のネットワークを作り、webからcacheという名前でRedisへ接続できるようにします。depends_onは起動順の関係を表しますが、アプリケーションが接続可能になるまで待つ設定とは別なので、実運用ではヘルスチェックや再接続も検討します。
Composeで起動する
docker compose up -d
docker compose ps
docker compose logs --tail 20NAME IMAGE SERVICE STATUS PORTS
sample-web-1 nginx:alpine web running 0.0.0.0:8080->80/tcp
sample-cache-1 redis:alpine cache runningup -dは必要なイメージを取得し、ネットワークを作ってサービスをバックグラウンドで起動します。ブラウザでhttp://localhost:8080を確認し、docker compose psでサービスの状態を見ます。Compose v2では、一覧のSTATUSにrunningと表示されます。プロジェクト名によってコンテナ名の先頭は変わります。
設定の展開結果を確認する
YAMLのインデントや環境変数の指定を間違えると、意図した構成にならないことがあります。実際にComposeが解釈した設定をconfigで確認します。
docker compose config設定ファイルを変更したら、まずdocker compose configで構文と展開結果を確認し、その後にdocker compose up -dを実行します。docker compose exec cache redis-cli pingを実行すれば、起動中のRedisへ接続してPONGを確認できます。
docker compose exec cache redis-cli pingPONG停止方法を使い分ける
docker compose stop
docker compose start
docker compose downstopはコンテナを残して停止し、startで再開します。downはコンテナとComposeが作ったネットワークを削除します。名前付きボリュームも削除するdown -vはデータを消すため、学習用データであることを確認してから使います。次の確認・安全な運用でログやトラブルの調べ方を扱います。