Docker Compose YAMLファイルのフォーマット
Docker Compose YAMLファイルを正しいインデントと構造でフォーマット・検証します。サービス、ボリューム、ネットワーク、環境変数定義の一般的なエラーをキャッチします。
Configuration Files
詳細な説明
Docker Compose YAMLフォーマット
Docker ComposeはYAMLを使用してマルチコンテナアプリケーションを定義します。docker-compose.yml(または compose.yaml)ファイルはサービス、ネットワーク、ボリューム、およびそれらの関係を記述します。可読性と正確性のために適切なフォーマットは重要です。
Docker Composeファイル構造
version: "3.9"
services:
web:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./html:/usr/share/nginx/html:ro
depends_on:
- api
environment:
- NGINX_HOST=example.com
networks:
- frontend
api:
build:
context: ./api
dockerfile: Dockerfile.prod
environment:
DATABASE_URL: postgres://user:pass@db:5432/mydb
REDIS_URL: redis://cache:6379
depends_on:
db:
condition: service_healthy
cache:
condition: service_started
networks:
- frontend
- backend
db:
image: postgres:16
volumes:
- pgdata:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: secret
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
networks:
- backend
volumes:
pgdata:
networks:
frontend:
backend:
よくあるフォーマットミス
- ポートマッピングのクォート —
"8080:8080"はYAMLがコロンをマッピングセパレータとして解釈するのを防ぐためにクォートすべき - 環境変数 — リスト形式(
- KEY=value)とマップ形式(KEY: value)の2つの構文があり、同じサービス内で混在させるとエラーになる - ボリュームパス —
./data:/app/dataのような相対パスは./または/で始まる必要がある - リスト項目のインデント — サービスレベルのキーはすべてサービス名の下の同じインデントレベルでなければならない
Compose V2 vs V1
モダンなDocker Compose(V2)は version フィールドが不要になりました。フォーマッターは version: "3.x" を含むレガシーファイルとそれを含まない新しいファイルの両方を処理する必要があります。
マルチファイルCompose
Docker Composeは複数ファイルによるオーバーライドをサポートしています(docker-compose.yml + docker-compose.override.yml)。各ファイルは一貫したスタイルで独立してフォーマットされるべきです。
ユースケース
Docker Composeフォーマットは、コンテナ化されたアプリケーションを管理する開発チームにとって不可欠です。適切にフォーマットされたcomposeファイルにより、コードレビュー時にサービスの依存関係、ポートマッピング、ボリュームマウントを簡単に確認できます。10以上のサービスを持つマイクロサービスアーキテクチャで作業するチームは特に、クリーンで一貫したYAMLフォーマットの恩恵を受けます。