CakePHP4 と php8 の Docker コンテナを作った #cakephp #php
概要
公式 Docker Image の php:8.0-apache をベースにして、CakePHP のコンテナを作った。
DockerHub & GitHub に置いてある。
なんで作ったか
ここ最近は仕事で触る中心が CakePHP になっているので、手元で色々試せる環境をサクッと用意できるようにしておきたかったから。
あと僕は元々 php 畑じゃないこともあり、手前の理解と準備でそれなりに時間がかかったから。
OS に必要なパッケージとか php 拡張とか、設定含めた Web サーバの準備あたり。
(Web サーバについては開発だけならビルトインサーバでもいいんだけど)
突然 CakePHP 触ることになった自分みたいなケースのように、「学習の順番」をある程度柔軟にコントロールしたかったりすると役に立つかもしれない。
雑記
php:<version>-apache
をベースにしている
php は Apache とセットになっているイメージが公式から提供されているので、それを元にしている。
Web サーバーに強いこだわりがない(nginx 使いたいとか)がなかったのと、せっかく公式が提供しているなら使わない手はないかなと。
設定ファイルの構成とかも乗っかったりできるのが楽だった。
GitHub Actions を使ってみた
GitHub での Tag 作成をトリガーにして、 DockerHub へ反映するのに GitHub Actions を使ってみた。
DockerHub の Automated Build は正規表現でブランチ名やタグ名を引っ掛けることができるはずなんだけど、どうにもできないので、せっかくならと試してみた。
今はタグだけなんだけど、いっそ main ブランチもまとめて寄せてしまってもいいかもしれない。
それっぽい Issue は見つけた。
Automated Build Regex Doesn't Work · Issue #1831 · docker/hub-feedback · GitHub
CI もしてみた
CakePHP の実行環境ということで、新規プロジェクトを作って http アクセスできることをテストにしている
docker-cakephp/ci.yml at main · su-kun1899/docker-cakephp · GitHub
その他
- mbstring のインストールに失敗
- simplexml のインストールに失敗
- libxml2-dev にする必要があった
- https://public-constructor.com/php74-installation-errors/
- zip を入れている
- prefer-dist が使えず、 composer install がタイムアウトしてしまうため
- COMPOSER_PROCESS_TIMEOUT を使えば回避できるが、遅さに耐えられなかった