Docker Composeジェネレーター

docker-compose.ymlを手で書くには、正確なインデント、すべてのポートマッピングの引用符、そして手元のComposeが理解するバージョン文字列を覚えておく必要があります。このジェネレーターでは、名前、イメージ、ホスト:コンテナのポートマッピング、ボリュームという単純なフィールドでサービスを定義できます。最新のCompose仕様(versionキーなし)に沿った有効なYAMLファイルを、妥当な既定値とともに出力します。

Composeファイルの作り方

  1. 1

    サービスを追加

    各サービスに名前、イメージ、ホスト:コンテナのポートマッピング、ボリュームを設定します。最初から2つのサンプルサービスが入っています。

  2. 2

    行を調整または削除

    フィールドは直接編集できます。+ Serviceボタンでサービスを追加し、不要な行は削除してください。

  3. 3

    生成されたYAMLを確認

    入力に合わせてプレビューが更新されます。ポートマッピングは引用符で囲まれ、versionキーは省略されます。

  4. 4

    ファイルをコピー

    生成されたdocker-compose.ymlをコピーし、プロジェクトのルートに貼り付けます。

現代のCompose仕様

Compose V2(Docker Desktopと現代のDocker Engineに同梱されるプラグイン)はCompose Specificationに従います。version:キーは非推奨で、ジェネレーターはそれを省きます。トップレベルのキーはservicesnetworksvolumesconfigssecretsです。

サービスの構造

本番寄りのサービスはこのように見えます。

services:
  web:
    image: nginx:1.27-alpine
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./public:/usr/share/nginx/html:ro
    depends_on:
      app:
        condition: service_healthy
    networks:
      - frontend
      - backend
    healthcheck:
      test: ["CMD", "wget", "--spider", "-q", "http://localhost/health"]
      interval: 30s
      timeout: 5s
      retries: 3

ボリューム:バインドマウント vs 名前付き

  • バインドマウント./app:/var/www)はコンテナをホスト上のパスに結びつけます。変更が即座に反映されるため、ローカル開発に最適です。
  • 名前付きボリュームpgdata:/var/lib/postgresql/data)はDockerが管理し、ホストのパスとは独立に永続します。データベースや、rm -rfで誤って消したくないものに適しています。
  • 匿名ボリューム、避けてください。再起動は生き延びますが、docker compose down -vで警告なしに消えます。

ネットワーク

既定でComposeはプロジェクト名にちなんだネットワークを作り、すべてのサービスをそれに接続します。明示的なネットワークの宣言は、次のときに便利です。

  • データベースを公開向けのサービスから隔離したい。
  • 既存のインフラに合わせるため、カスタムのサブネットを持つブリッジが必要。
  • コンテナを既存の外部ネットワークに接続したい(external: true)。

避けたいよくある間違い

  • versionキーの競合。 先頭のversion: "3.8"は、healthcheckのstart_intervalのような新しい機能が古いComposeで動くのを妨げます。ジェネレーターはversionキーを省きます。
  • ポートの引用符。 8080:80は、一部の縁のケースでYAMLの60進数として解析されます。ジェネレーターは常にポートマッピングを引用符で囲みます。
  • ハードコードされた秘密情報。 compose.ymlに直接書かれた秘密情報はgitにコミットされてしまいます。env_fileかプラットフォームのシークレットストアに保管してください。
  • conditionなしのdepends_on。 素のdepends_on: [db]はサービスの準備ではなくコンテナの起動を待ちます。condition: service_healthyを使い、依存先にhealthcheckを追加してください。

よくある質問

現在のCompose Specification(Docker Compose V2に整合)です。ファイルはversion:キーを省きます。これは現代のComposeファイルの書き方です。Docker Compose V2.22以降で動作します。

このバージョンのフォームではできません。ジェネレーターはイメージ、ポート、ボリュームを扱うサービス定義に焦点を当てています。生成されたYAMLにネットワーク、環境変数、ヘルスチェックなどのキーを手動で追加してから利用できます。

いいえ、このツールはcompose.ymlに焦点を当てています。Dockerfileには、ベースイメージの選択と5つのスタックのCOPY/RUN順序を扱うDockerfileジェネレーターを使ってください。

いいえ。サービス定義はこのページでYAMLを構築するためだけに使われ、保存、アップロード、共有はされません。

関連ツール

このツールは他の言語でも利用できます