概要 🎂
CakePHP3のチュートリアルを試すのにDockerを使いました
https://github.com/yotasasaki/cakephp3-docker に置いてあります。
構成
- タイトルの通りです。チュートリアルを進めるための最低限の構成です。
- Docker Desktop for mac
- Docker Compose
- Nginx
- PHP-FPM
- MySQL 8
- CakePHP3系 (3.8.4)
使い方
$ cd /YOUR/PROJECT
$ git clone https://github.com/yotasasaki/cakephp3-docker.git .
$ cd docker/
$ docker-compose up -d
$ docker ps --format="{{.Names}}"
cake-nginx
cake-mysql
cake-phpfpm
$ docker exec -it cake-phpfpm bash
// in phpfpm container
/var/www/html # rm cms/empty && composer self-update && composer create-project --prefer-dist cakephp/app:^3.8 cms
... composer install ...
/var/www/html # exit
// config/app.php の編集
'Datasources' => [
'default' => [
// ... more configurations
'host' => 'cake-mysql',
'username' => 'cakephp',
'password' => 'password',
'database' => 'cake_cms',
http://0.0.0.0:8080/ にアクセスするとCakePHP3のデフォルトトップページにアクセスできるはずなので、Database
項目が CakePHP is able to connect to the database.
になっていればOKです。
チュートリアルを進める上での注意点
CakePHP 3.8.4 でもほぼチュートリアルの通りでも問題ありませんが、1点だけ。
-
検証ルールの更新 にて、
->allowEmptyString('title', false)
の引数に関して警告が出ます。->allowEmptyString('title', null, false)
のように引数の順番を変えてやると直ります。参考:3.8移行ガイド
Deprecated (16384): You are using a deprecated argument order for Cake\Validation\Validator::allowEmptyString. You should reverse the order of your `when` and `message` arguments so that they are `message, when`. - /var/www/html/cake/vendor/cakephp/cakephp/src/Validation/Validator.php, line: 855
補足
- MySQL8系を使うために
--default-authentication-plugin=mysql_native_password
としました。 - 大体皆がハマる
intl
に関しては、phpfpmコンテナ上で有効化してあるので、composer create-project
はコンテナにログインして行うようにしてます。ローカルPC上で実行するとintl
設定したりまた面倒な事になるので。 - 今回は
docker-compose up
時にチュートリアル用のテーブルも作ってしまう様にしました。不要な場合は、1.create-schema.sql を削除すれば、テーブルは作成されません。 -
cms
ディレクトリを他の名前にする場合は、以下を修正して、docker-compose down --rmi all
してから再度up
してください-
docker-composer.yml
のvolumes -
nginx/default.conf
のroot - CakePHPのDL前なら
composer create-project
コマンドの最後の引数
-
参考
環境構築に関してはすでにたくさん分かりやすい記事があるので、本記事は補足情報程度にして頂ければと思います。