LoginSignup
4
4

More than 5 years have passed since last update.

laradock + cakePHP3で環境構築

Last updated at Posted at 2018-02-28

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',

こんな風に、welcomeページのDatabaseのところが緑のコック帽(?)になればOKです。
私の場合、なかなかmysqlが起動してくれなく、以前にビルドした全てのdockerコンテナとイメージと、.laradockもフォルダごと消去してやり直しました。
こちらの記事にもあるように、dockerの設定を変えるときdocker-compose stopしてなかったのが原因ぽいです。

参考にした記事

:bow::bow::bow::bow::bow::bow:

おまけ

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

$ docker logout
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4