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:

よくあるフォーマットミス

  1. ポートマッピングのクォート"8080:8080" はYAMLがコロンをマッピングセパレータとして解釈するのを防ぐためにクォートすべき
  2. 環境変数 — リスト形式(- KEY=value)とマップ形式(KEY: value)の2つの構文があり、同じサービス内で混在させるとエラーになる
  3. ボリュームパス./data:/app/data のような相対パスは ./ または / で始まる必要がある
  4. リスト項目のインデント — サービスレベルのキーはすべてサービス名の下の同じインデントレベルでなければならない

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フォーマットの恩恵を受けます。

試してみる — YAML Formatter & Validator

フルツールを開く