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 や、別途用意される 開発環境セットアップガイド を参照してください。