Skip to content

Conversation

@gakigaki
Copy link
Contributor

@gakigaki gakigaki commented Oct 14, 2025

概要

現状の課題

  • docker/app/Dockerfile がサポート切れの PHP 7 と MySQL 5.7 を前提にしており、Composer を HTTP 経由で取得していたためセキュリティリスクが高く、さらに TZ を未設定のままタイムゾーンを書き出していたので設定が有効になっていませんでした。
  • docker-compose.yml に DB 資格情報を平文で直書きしていたため、環境ごとに切り替えられず安全性も不足していました。
  • Selenium 環境から http://app へアクセスすると .app ドメインの HSTS プリロードで HTTPS が強制され、接続エラーが発生していました。
  • .env の初期化やテスト用 DB 作成を手作業で行う必要があり、ブラウザテストを含む再現性の高い開発環境を用意できていませんでした。

変更の目的

PHP 8 系と MySQL 8 を用いた安全で再現性の高い開発環境を整え、ブラウザテスト基盤と資格情報の安全な切り替えを実現する。

対応内容(要約)

Docker サービス構成を再設計し、Web アプリ用コンテナとセットアップスクリプトを刷新、MySQL 初期化スクリプトと Selenium Dusk サービスを導入しました。

変更内容

  • .gitignore
    • 永続化用 docker/db/mysql_data のみ除外し、initdb.d 配下の初期化スクリプトを追跡できるようにしました。
  • docker-compose.yml
    • サービス名を app から webapp に変更し、.app HSTS プリロードによる Dusk の接続失敗を解消。
    • webapp を PHP 8.2 ベースに切り替え、PHP_INI_ENVTZ をビルド引数から指定。depends_on で DB と Dusk の起動完了を待つようにしました。
    • db を MySQL 5.7 から 8 系へ更新し、認証情報・ポート・イメージを環境変数化。initdb.d をマウントして起動時にテスト/Dusk 用 DB を作成します。
    • Selenium dusk サービスを追加し、ヘルスチェック付きで webappDUSK_DRIVER_URL を参照できるよう構成しました。
  • docker/webapp/Dockerfile
    • PHP 8.2 Apache イメージを採用し、Composer 公式バイナリをコピーして HTTPS 経由の安全な取得に変更。
    • GD/intl/mbstring/pdo など必要拡張をビルドし、PHP_INI_ENVTZ をビルド引数で受けて php.ini 切り替えやタイムゾーン設定を有効化。
    • 日本語ロケールを生成して LANG/LC_ALLja_JP.UTF-8 に設定し、日本語環境の挙動を安定化。
  • docker/webapp/setup.sh
    • composer-dev.json など代替 Composer 設定ファイルにも対応し、.env の生成/更新をフラグで制御。
    • DB 接続確立まで待機し、php artisan key:generatemigrate --forcedb:seed --force を標準にしつつ、SETUP_RESET_DB などのフラグで migrate:fresh --seed --force を明示的に選べるよう切り替えを追加。.env 権限調整や DB/メール設定のデフォルト値を環境変数から反映します。
  • docker/db/initdb.d/001-create-testing-db.sql, 002-create-dusk-db.sql
    • connect_testingconnect_dusk を起動時に自動生成し、PHPUnit/Dusk 実行時の事前作業を不要にしました。

注意事項

Docker環境の更新にともない、既存の MySQL 5.7 ボリュームを移行/初期化する必要があります。 移行手順

レビュー完了希望日

急ぎません

関連Pull requests/Issues

参考

なし

DB変更の有無

無し

チェックリスト

… initialization

- webapp: app -> webapp に名称変更(appがTLDのため、duskのchrome がHTTPSアクセスしようとするのを防ぐ)
- webapp: PHP 7 -> 8.2
- webapp: enviromentsからDBの設定を削除(.envの切替で設定を変更できるようにするため)
- DB: MySQL5.7から8へバージョンアップ
- DB: 初回起動時にテスト用のスキーマを作成
- dusk: dusk用のselenium追加
- 他、改善
@gakigaki gakigaki added the developer update 開発者向けの更新 label Oct 14, 2025
@gakigaki gakigaki marked this pull request as ready for review October 14, 2025 12:59
@gakigaki gakigaki merged commit f71e0d5 into master Oct 15, 2025
1 check passed
@gakigaki gakigaki deleted the docker-improve branch October 15, 2025 04:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

developer update 開発者向けの更新

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant