🧭 全体目的
- Yii 1.1.15 と 1.1.32 の挙動比較
- Dockerで完全分離環境を構築
- 同一条件でwebappを生成して確認
🐳 ① 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