Skip to content

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)がスムーズに行われます。

Released under the MIT License.