🧭 全体目的


🐳 ① Docker環境構築

📁 ディレクトリ構成

mkdir yii-compare
cd yii-compare

mkdir -p yii115/src
mkdir -p yii132/src

📄 Dockerfile 作成

touch Dockerfile
# ===============================
# PHP 7.4 + Apache の公式イメージを使用
# ===============================
FROM php:7.4-apache

# ===============================
# 必要なPHP拡張をインストール
# pdo         → DB抽象化レイヤー
# pdo_mysql   → MySQL接続用PDOドライバ
# mysqli      → MySQL接続拡張(Yii1で使用されることがある)
# ===============================
RUN docker-php-ext-install pdo pdo_mysql mysqli

# ===============================
# Apacheのmod_rewriteを有効化
# YiiはURLルーティングで.htaccessを使うため必須
# ===============================
RUN a2enmod rewrite

# ===============================
# コンテナ内の作業ディレクトリを指定
# Apacheのドキュメントルートは /var/www/html
# ===============================
WORKDIR /var/www/html

📄 docker-compose.yml 作成

touch docker-compose.yml
version: '3.8'  # Docker Composeのバージョン

services

  # ===============================
  # Yii 1.1.15 用コンテナ
  # ===============================
  yii115:
    build: .                     # ルートのDockerfileを使用してビルド
    container_name: yii115_app   # コンテナ名
    ports:
      - "8080:80"                # ホスト8080 → コンテナ80(Apache)
    volumes:
      - ./yii115/src:/var/www/html  # ローカルコードをコンテナにマウント
    depends_on:
      - db                       # DBコンテナが先に起動するよう指定

  # ===============================
  # Yii 1.1.32 用コンテナ
  # ===============================
  yii132:
    build: .
    container_name: yii132_app
    ports:
      - "8081:80"                # ホスト8081 → コンテナ80
    volumes:
      - ./yii132/src:/var/www/html
    depends_on:
      - db

  # ===============================
  # MySQL データベース
  # ===============================
  db:
    image: mysql:8.0              
    container_name: yii_compare_db
    restart: always               # コンテナが落ちたら自動再起動
    environment:
      MYSQL_ROOT_PASSWORD: root   # rootパスワード
      MYSQL_DATABASE: yii         # 起動時に作成されるDB名
      MYSQL_USER: yii             # 一般ユーザー
      MYSQL_PASSWORD: yii         # 一般ユーザーパスワード
    ports:
      - "3306:3306"               # ローカルからMySQL接続可能

🚀 起動

docker compose up -d --build