Bonus Services Docker Compose Breakdown
概要
srcs/docker-compose.yml における、ボーナス要件に関連するサービス設定の解説です。 必須要件のサービス (NGINX, WordPress, MariaDB) と同じネットワーク inception に所属し、相互に通信を行います。
Docker の仕組みについて: Docker Compose がどのようにコンテナを管理し、ネットワークを構築するかについての詳細は、Dockerの仕組み (Deep Dive) を参照してください。
サービス定義詳細
Website (VitePress + Express)
yaml
website:
container_name: website
build: requirements/bonus/website
image: website
networks:
- inception
volumes:
- ../docs:/app/docs # ホスト側のドキュメントソースを同期
env_file:
- .env
restart: always- Volumes: ホストの
docs/ディレクトリをコンテナ内にマウントすることで、ドキュメントの編集を容易にしています。 - Ports: ホストへは公開せず、内部ネットワーク経由で Nginx からアクセスされます。
Redis (Cache)
yaml
redis:
container_name: redis
build: requirements/bonus/redis
image: redis
networks:
- inception
restart: always- 非常にシンプルな構成で、永続化ボリュームも(キャッシュ用途のため)必須ではありませんが、必要に応じて追加可能です。
FTP (vsftpd)
yaml
ftp:
container_name: ftp
build: requirements/bonus/ftp
image: ftp
networks:
- inception
volumes:
- wordpress:/var/www/html # WordPressと同じボリュームをマウント
env_file:
- .env
restart: always
ports:
- "21:21" # 制御ポート
- "21100-21110:21100-21110" # データ転送用パッシブポート- Volumes:
wordpressボリュームを共有することが最大のポイントです。これにより FTP 経由でアップロードしたファイルが WordPress コンテナから参照可能になります。 - Ports: パッシブモード用のポートレンジ開放が必要です。
Adminer
yaml
adminer:
container_name: adminer
build: requirements/bonus/adminer
image: adminer
networks:
- inception
restart: always
env_file:
- .env- ステートレスなアプリケーションであるため、ボリュームは不要です。DBへの接続情報はログイン時に入力するか、環境変数を活用します。
ネットワーク構成
全てのボーナスサービスは inception ブリッジネットワークに参加しており、コンテナ名(website, redis, mariadb 等)で名前解決が可能です。 これにより、アプリケーション間の連携(例: Website -> 42API, WordPress -> Redis)がスムーズに行われます。