コンテンツにスキップ

06. Dockerフォルダ

Docker/ フォルダは、本プロジェクトで使用する Dockerコンテナ関連のファイルDockerfile, docker-compose.yml など)を一元的に格納する場所です。

開発環境、テスト環境、さらには本番環境のコンテナ化を推進し、環境差異に起因する問題を解消することを目的とします。


フォルダ構成の基本原則

Docker/ フォルダの構成は、管理するサービスやアプリケーションの構成に応じて柔軟に設計しますが、以下の原則に従うことを推奨します。

  • サービスごとにサブフォルダを作成する: Webサーバー、APIサーバー、データベースなど、コンテナ化するサービスごとにサブフォルダを作成し、関連する Dockerfile や設定ファイルを格納します。これにより、サービス単位での管理が容易になります。

  • トップレベルに docker-compose.yml を配置する: 複数のサービスコンテナを連携させるための docker-compose.yml は、Docker/ フォルダのトップレベルに配置します。これにより、プロジェクト全体のコンテナ構成を一目で把握できます。

  • 環境別の設定ファイルを活用する: 開発(develop)、テスト(testing)、本番(production)など、環境ごとに異なる設定を docker-compose.override.yml.env ファイルを使って管理します。


構成パターン例

例1: 単一サービスのコンテナ化

Webアプリケーションなど、単一のサービスのみをコンテナ化する場合のシンプルな構成です。

Docker/
└── webapp/
    ├── Dockerfile
    └── nginx.conf

例2: 複数サービス連携 (docker-compose)

バックエンドAPI、フロントエンド、データベースの3つのサービスを連携させる、一般的なWebアプリケーションの構成例です。

Docker/
├── docker-compose.yml          # 全サービスを定義
├── .env.example                # 環境変数のテンプレート
│
├── api/                        # バックエンドAPIサービス
│   └── Dockerfile
│
├── web/                        # フロントエンドサービス
│   └── Dockerfile
│
└── db/                         # データベースサービス
    └── init.sql                # 初期化用SQLスクリプト

例3: ビルド用コンテナと実行用コンテナの分離

マルチステージビルドを活用し、ビルド環境と実行環境でコンテナを分離する場合の構成です。

Docker/
├── docker-compose.yml
│
├── builder/                    # ビルド用コンテナ
│   └── Dockerfile              # ビルドツールやSDKを含む
│
└── runner/                     # 実行用コンテナ
    └── Dockerfile              # ランタイムのみを含む軽量イメージ

Note

本ドキュメントは、あくまで Docker/ フォルダの「構成ルール」を定めるものです。具体的なコンテナのビルド方法や実行手順については、各プロジェクトの README.md や、別途用意される 開発環境セットアップガイド を参照してください。