Docker Composeジェネレーター — 無料オンラインツール
サービスを選択して、ボリューム、ネットワーク、環境変数を含む本番向けdocker-compose.ymlを取得。
Docker Composeとは?
Docker Composeは、マルチコンテナアプリケーションを定義し実行するためのツールです。単一の docker-compose.yml ファイルで、Webサーバー、データベース、キャッシュなどのサービスと、それらの接続・通信方法を含むアプリケーションスタック全体を定義します。docker-compose up コマンド一つですべてが起動します。
Docker Composeはローカル開発環境、CI/CDパイプライン、さらには小規模な本番デプロイメントに最適です。すべての開発者が同じ環境設定を使用することを保証し、「自分のマシンでは動く」問題を解消します。
一般的なDocker Composeスタック
- Node.js + PostgreSQL + Redis: リレーショナルストレージとキャッシングを備えた典型的なREST APIバックエンド
- Python + MySQL: DjangoまたはFlask Webアプリケーションによく使用
- Nginx + Node.js: Node.jsアプリケーションの前にNginxをリバースプロキシとして配置
- フルスタック:Nginx + Node.js + PostgreSQL + Redis: リバースプロキシ、API、データベース、キャッシュを備えた本番環境に近いセットアップ
Docker Composeのボリュームとネットワークのヒント
- コンテナの再起動間でデータを保持するために、データベースデータには常に名前付きボリュームを使用する
- サービス間通信にはカスタムブリッジネットワークを使用 — サービスはサービス名で互いに到達可能
- 機密情報(パスワード、APIキー)にはcomposeファイルにハードコーディングせず、
.envファイルを使用 - 本番サービスには障害時の自動再起動のために
restart: unless-stoppedを設定 - データベースの準備完了まで依存サービスを遅延させるには
healthcheckを使用
Docker Composeに関するよくある質問
docker compose upとdocker compose startの違いは何ですか?
docker compose up はコンテナをゼロから作成して起動し、必要に応じてイメージをプルまたはビルドします。docker compose start は以前作成されて停止されたコンテナのみを再起動します — 新しいコンテナは作成できません。バックグラウンドモードで起動するには docker compose up -d を使用します。Dockerfileが変更された場合にイメージの再ビルドを強制するには --build を追加します。
Docker Composeでサービス同士はどのように通信しますか?
同じDocker Composeネットワーク上のサービスは、サービス名をホスト名として使用して互いに到達できます。データベースサービスの名前が db の場合、アプリケーションは localhost:5432 の代わりに db:5432 に接続します。Docker Composeは同じcomposeファイルで定義されたすべてのサービスに対して、デフォルトのブリッジネットワークを自動的に作成します。より詳細な制御のためにカスタム名前付きネットワークを作成することもできます。
コンテナの再起動間でデータベースデータを保持するにはどうすればいいですか?
composeファイルで名前付きボリュームを使用します。ボリュームがない場合、コンテナ内のすべてのデータはコンテナが停止すると失われます。サービスの下にボリュームを定義します:volumes: - postgres_data:/var/lib/postgresql/data、次にトップレベルで宣言します:volumes: postgres_data:。名前付きボリュームはDockerによって管理され、docker compose down でも保持されます — docker compose down -v のみがボリュームを削除します。
Docker Composeのrestart: unless-stoppedとはどういう意味ですか?
restart: unless-stopped は、コンテナがクラッシュした場合やDockerデーモンが再起動した場合(サーバーのリブート後など)にDockerが自動的にコンテナを再起動しますが、docker compose stop で明示的に停止したコンテナは再起動しないことを意味します。これは本番サービスに推奨される設定です。その他のオプション:no(再起動しない)、always(明示的な停止後も常に再起動)、on-failure(非ゼロの終了コード時のみ再起動)。
関連開発者ツール
- .ENVファイルインスペクター — 環境ファイルの検証と公開されたAPIキー・シークレットの検出
- Gitコマンドファインダー — 20以上の一般的なシナリオに対応する正確なGitコマンドを検索
- Cron式エクスプレイナー — Cron構文を解析し次の実行時間を確認
- CORSエラーデバッガー — フレームワーク固有の修正でCORSエラーをデバッグ
- すべての無料開発者ツールを見る