Docker Compose ジェネレーター

フォームから有効な docker-compose.yml を作成。サービス、イメージ、ポート、環境変数、ボリューム、depends_on、再起動ポリシーに対応し、PostgreSQL、MySQL、Redis のプリセット付きです。

サービス 1
サービス 2
docker-compose.yml

最新の Compose Specification に準拠しています(「version:」キーなし)。名前付きボリュームは自動で宣言されます。サンプルのパスワードは必ず変更してください。

関連ツール

すべて表示

Docker Compose ジェネレーターとは?

YAML のインデントに悩まずに、マルチコンテナ構成の docker-compose.yml を作成します。プリセット(PostgreSQL、MySQL、Redis、MongoDB、Nginx、自分のアプリ)からサービスを追加するか、空の状態から始めて、イメージまたはビルドコンテキスト、ポート、環境変数、ボリューム、依存関係、再起動ポリシー、コマンドを入力します。YAML は入力に合わせて更新され、エラーも説明されます。

Docker Compose ジェネレーターの使い方

  1. サンプルのサービスを編集するか、サービスを追加 でプリセットを挿入します。
  2. 各サービスの イメージ(または ビルドコンテキスト(イメージがない場合))、ポート(ホスト:コンテナー)、環境変数(KEY=value)、ボリューム(ソース:ターゲット)、依存先、再起動ポリシー を設定します。
  3. 赤字で表示される問題(無効な名前、ポート、変数、依存関係)を修正します。
  4. docker-compose.yml をダウンロードして、docker compose up -d を実行します。

例

入力
Service app (build ., port 3000, NODE_ENV=production, depends on db) + PostgreSQL preset
出力
services:
  app:
    build: .
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      NODE_ENV: production
    depends_on:
      - db
  db:
    image: postgres:16-alpine
    restart: unless-stopped
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: change-me
      POSTGRES_DB: app
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata: {}

Docker Compose ジェネレーターを使うべき場面

ローカルの開発スタック、デモ、シンプルな単一ホストでのデプロイを構築するときに使います。本番では通常、ヘルスチェック、リソース制限、シークレット、ネットワークを手動で追加するか、Kubernetes のようなオーケストレーターを使います。プリセットのサンプルパスワードは、どこかで使う前に必ず置き換えてください。

Docker Compose ジェネレーターの仕組み

フォームは、現在の Compose Specification(古い version: キーなし)に従ったオブジェクトに変換され、js-yaml で YAML にシリアライズされます。22:22 のように引用符のない値は YAML 1.1 のパーサーに 60 進数として読まれることがあるため、ポートのマッピングは引用符で囲まれます。環境変数の KEY=value の行はマッピングになり、ソースがパスではなく名前のボリューム(例:pgdata:/var/lib/postgresql/data)は、トップレベルの volumes: キーの下に自動的に宣言されます。サービス名、ポートの形式、KEY=value の構文、depends_on の対象が検証されます。

一般的な使用例

  • PostgreSQL と Redis を含むアプリをローカルで実行する
  • 再現可能な開発環境をチームと共有する
  • セルフホストするツール用の compose ファイルを作成する
  • 例を通じて Compose の構文を学ぶ

セキュリティ注意事項

データベースのポート(例:5432:5432)を公開すると、すべてのホストインターフェースで露出します。サーバーではポートのマッピングを削除するか、127.0.0.1 にバインドし、強力なパスワードやシークレットを使ってください。

よくある質問

version: の行がないのはなぜですか?

version キーは、Docker Compose v2 が使う Compose Specification では廃止されています。現行のバージョンはこれを無視して警告を出します。

depends_on はデータベースの準備ができるまで待ちますか?

いいえ、起動順を制御するだけです。healthcheck と condition: service_healthy を追加するか、アプリで接続をリトライしてください。

名前付きボリュームとバインドマウントの違いは何ですか?

名前付きボリューム(pgdata:/path)は Docker が管理し、コンテナを再作成しても残ります。バインドマウント(./data:/path)は、手元のマシンのフォルダーをマッピングします。

他のカテゴリを見る