Conversation
… 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追加 - 他、改善
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概要
現状の課題
docker/app/Dockerfileがサポート切れの PHP 7 と MySQL 5.7 を前提にしており、Composer を HTTP 経由で取得していたためセキュリティリスクが高く、さらにTZを未設定のままタイムゾーンを書き出していたので設定が有効になっていませんでした。docker-compose.ymlに DB 資格情報を平文で直書きしていたため、環境ごとに切り替えられず安全性も不足していました。http://appへアクセスすると.appドメインの HSTS プリロードで HTTPS が強制され、接続エラーが発生していました。.envの初期化やテスト用 DB 作成を手作業で行う必要があり、ブラウザテストを含む再現性の高い開発環境を用意できていませんでした。変更の目的
PHP 8 系と MySQL 8 を用いた安全で再現性の高い開発環境を整え、ブラウザテスト基盤と資格情報の安全な切り替えを実現する。
対応内容(要約)
Docker サービス構成を再設計し、Web アプリ用コンテナとセットアップスクリプトを刷新、MySQL 初期化スクリプトと Selenium Dusk サービスを導入しました。
変更内容
.gitignoredocker/db/mysql_dataのみ除外し、initdb.d配下の初期化スクリプトを追跡できるようにしました。docker-compose.ymlappからwebappに変更し、.appHSTS プリロードによる Dusk の接続失敗を解消。webappを PHP 8.2 ベースに切り替え、PHP_INI_ENVとTZをビルド引数から指定。depends_onで DB と Dusk の起動完了を待つようにしました。dbを MySQL 5.7 から 8 系へ更新し、認証情報・ポート・イメージを環境変数化。initdb.dをマウントして起動時にテスト/Dusk 用 DB を作成します。duskサービスを追加し、ヘルスチェック付きでwebappがDUSK_DRIVER_URLを参照できるよう構成しました。docker/webapp/DockerfilePHP_INI_ENVとTZをビルド引数で受けてphp.ini切り替えやタイムゾーン設定を有効化。LANG/LC_ALLをja_JP.UTF-8に設定し、日本語環境の挙動を安定化。docker/webapp/setup.shcomposer-dev.jsonなど代替 Composer 設定ファイルにも対応し、.envの生成/更新をフラグで制御。php artisan key:generate→migrate --force→db:seed --forceを標準にしつつ、SETUP_RESET_DBなどのフラグでmigrate:fresh --seed --forceを明示的に選べるよう切り替えを追加。.env権限調整や DB/メール設定のデフォルト値を環境変数から反映します。docker/db/initdb.d/001-create-testing-db.sql,002-create-dusk-db.sqlconnect_testingとconnect_duskを起動時に自動生成し、PHPUnit/Dusk 実行時の事前作業を不要にしました。注意事項
Docker環境の更新にともない、既存の MySQL 5.7 ボリュームを移行/初期化する必要があります。 移行手順
レビュー完了希望日
急ぎません
関連Pull requests/Issues
参考
なし
DB変更の有無
無し
チェックリスト