laravelだけでなくcakePHPにもlaradockオススメです。
laradockを適当なディレクトリにgit cloneする
$ mkdir sample_project
$ cd sample_project
$ git clone https://github.com/laradock/laradock.git
.envファイル作成
今回はこういう構成でいこうと思います。
+ laradock
+ myapp
env-exampleファイルをコピーして、.envファイルを作成します
$ cd laradock
$ cp env-example .env
docker-composeで環境をビルド
nginxとmysqlとphpmyadmin
$ docker-compose up -d nginx mysql phpmyadmin
コンテナが起動しているか確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1ba965f3c20d laradock_mysql "docker-entrypoint.s…" 18 hours ago Up 12 seconds 0.0.0.0:3306->3306/tcp laradock_mysql_1
310b880caca5 laradock_phpmyadmin "/run.sh phpmyadmin" 18 hours ago Up 7 seconds 9000/tcp, 0.0.0.0:8080->80/tcp laradock_phpmyadmin_1
0781d6c8ab84 laradock_nginx "nginx" 18 hours ago Up 5 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp laradock_nginx_1
75a72f0e829c laradock_php-fpm "docker-php-entrypoi…" 18 hours ago Up 6 seconds 9000/tcp laradock_php-fpm_1
6668e7c4ef01 laradock_workspace "/sbin/my_init" 18 hours ago Up 12 seconds 0.0.0.0:2222->22/tcp laradock_workspace_1
phpmyadminは、.env
のPHP MY ADMINの設定がデフォルトであれば、http://localhost:8080で入れます。
workspaceに入ってみる
$ docker-compose exec workspace bash
cakePHP3インストール
myappはcakePHPをインストールするディレクトリ名です。
$ composer self-update && composer create-project --prefer-dist cakephp/app myapp
rootディレクトリをcakePHP用に設定
cakePHPのルートディレクトリ/webroot
を設定します。
$ vim laradock/nginx/sites/default.conf
- root /var/www/public;
+ root /var/www/myapp/webroot;
nginx再起動
rootディレクトリの変更を反映させるためにnginxを再起動します。
$ docker-compose restart nginx
intlを有効化
cakePHPはintl拡張モジュールが必要?大人しく入れちゃいます。
$ vim laradock/.env
- PHP_FPM_INSTALL_INTL=false
+ PHP_FPM_INSTALL_INTL=true
php-fpmのコンテナの再生成
intlを有効化したので再びビルドします。
$ docker-compose up -d --build php-fpm
表示確認
http://localhostでcakePHPのwelcomeページが表示されればOKです。

DB設定
DB接続設定も行います。laradock/.env
のMYSQLの設定に合わせます。
cakePHPのソース、config/app.php
の 220行目付近
```config/app.php`
- 'host' => 'localhost',
- 'username' => 'my_app',
- 'database' => 'my_app',
- 'host' => 'mysql',
- 'username' => 'default',
- 'database' => 'my_app',
<img src="https://qiita-image-store.s3.amazonaws.com/0/92407/5e4a3c3a-5aa3-881e-64a6-f0d690e69b23.png" width=50%>
こんな風に、welcomeページのDatabaseのところが緑のコック帽(?)になればOKです。
私の場合、なかなかmysqlが起動してくれなく、以前にビルドした全てのdockerコンテナとイメージと、`.laradock`もフォルダごと消去してやり直しました。
[こちらの記事](https://qiita.com/lara_bell/items/d4bd1340a5cc7dfcfcb4)にもあるように、dockerの設定を変えるとき`docker-compose stop`してなかったのが原因ぽいです。
## 参考にした記事
:bow::bow::bow::bow::bow::bow:
- [LaradockでCakePHPの開発環境(nginx・php-fpm・mysql)を構築する](https://qiita.com/nino0813g/items/a29e046f851c5eb02a76)
- [LaradockでMySQLがどうしても立ち上がらない人あつまれー!](https://qiita.com/lara_bell/items/d4bd1340a5cc7dfcfcb4)
## おまけ
mysqlをビルド時にこんなエラーが。
ERROR: Service 'mysql' failed to build: Get https://registry-1.docker.io/v2/library/mysql/manifests/8.0: unauthorized: incorrect username or password
一回ログアウトするといいらしい
[コンテナの起動時に ERROR: Service 'mysql' failed to build のエラー対応 - Qiita](https://qiita.com/yshishido/items/cd6188324a125ca7d8d5)
$ docker logout