Docker Compose ジェネレーター
フォームから有効な docker-compose.yml を作成。サービス、イメージ、ポート、環境変数、ボリューム、depends_on、再起動ポリシーに対応し、PostgreSQL、MySQL、Redis のプリセット付きです。
最新の Compose Specification に準拠しています(「version:」キーなし)。名前付きボリュームは自動で宣言されます。サンプルのパスワードは必ず変更してください。
関連ツール
すべて表示Docker Compose ジェネレーターとは?
YAML のインデントに悩まずに、マルチコンテナ構成の docker-compose.yml を作成します。プリセット(PostgreSQL、MySQL、Redis、MongoDB、Nginx、自分のアプリ)からサービスを追加するか、空の状態から始めて、イメージまたはビルドコンテキスト、ポート、環境変数、ボリューム、依存関係、再起動ポリシー、コマンドを入力します。YAML は入力に合わせて更新され、エラーも説明されます。
Docker Compose ジェネレーターの使い方
- サンプルのサービスを編集するか、サービスを追加 でプリセットを挿入します。
- 各サービスの イメージ(または ビルドコンテキスト(イメージがない場合))、ポート(ホスト:コンテナー)、環境変数(KEY=value)、ボリューム(ソース:ターゲット)、依存先、再起動ポリシー を設定します。
- 赤字で表示される問題(無効な名前、ポート、変数、依存関係)を修正します。
- 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)は、手元のマシンのフォルダーをマッピングします。