AWS Certified Developer - Associate (DVA-C02)試験の勉強をする中でECSが出てきたので、Claude CodeにPowerCMS XのDocker開発環境を作成させました。

当初の目論見としてはECS(Fargate)・EFS・RDS・ElastiCache・Secrets Managerを利用してPowerCMS Xを動かすことだったのですが、まだまだAWSの勉強不足でこれらの環境で動かすことには成功していません。(どうも権限設定周りが上手くできていないだけで、コンテナの問題ではないです)PowerCMS Xの開発やサポート時にローカル開発環境があると便利なので、ひとまずローカル開発環境として最適な状態に再構築してみました。

特徴

Apacheとphp-fpmのコンテナが分かれているので、.envPHP_VERSIONでPHPのバージョンを容易に変更することができると考えています。まだ体感できていないのですが、コンテナを分離するとスケーラビリティ向上や障害の局所化、デプロイの柔軟性向上にもなるようです。今まで使用していたコンテナはVPSを立てるかのように1コンテナに必要なミドルウェアやソフトウェアを全部詰め込んでいました。

php-fpmコンテナにHyper Estraierをセットアップするようにしてあり、SearchEstraierプラグインも気軽にお試しいただけます。

データベース情報の設定

コンテナをビルドする前に.env.exampleをコピーして.envを作成し、データベース情報を記述してください。この情報に基づいてMySQLコンテナが構築されます。

db-config.phpは以下のようにすると.envの情報が反映されます。getenvを使用しているのは「Amazon ECS 環境変数経由で Secrets Manager シークレットを伝達する - Amazon Elastic Container Service」の内容に基づいています。

<?php
define( 'PADO_DB_NAME',     getenv( 'DB_NAME' ) ?: 'powercmsx' );
define( 'PADO_DB_HOST',     getenv( 'DB_HOST' ) ?: 'localhost' );
define( 'PADO_DB_USER',     getenv( 'DB_USER' ) ?: 'powercmsx' );
define( 'PADO_DB_PASSWORD', getenv( 'DB_PASSWORD' ) ?: '' );
define( 'PADO_DB_PORT',     getenv( 'DB_PORT' ) ?: '3306' );

(補足)PowerCMS X開発者向けのライセンス

公式サイトに開発者向けのライセンスのご案内がありますのでご確認ください。