みなさんはLaradockをご存知でしょうか?
Laradockは、Laravelの開発環境を構築するのに用いられることが多いDocker環境です。
しかし、Laravel専用のDocker環境ということではなく、PHP開発向けに構築されたDocker環境であるため、Laradockを使ってCakePHPの開発環境を構築することもできます。
この記事では、Laradockを使ってCakePHPの開発環境を構築する方法を解説していきたいと思います。
ちなみにこのブログでもLaradockを使ってLaravel開発環境を構築する方法を紹介しているので、ぜひこちらも参考にしてくださいね。
Laradockを使って、CakePHP開発環境を構築する
それでは早速Laradockを使って、CakePHPの開発環境を構築していきましょう。
なお、この記事ではCakePHP3の開発環境を構築していきたいと思います。
Laradockのインストール
まずはプロジェクトディレクトリを作成して、その中にLaradockのリポジトリをcloneしていきましょう。
mkdir test-project
cd test-project
git clone https://github.com/Laradock/laradock.git
cloneに成功すると、test-projectディレクトリの中にlaradockディレクトリが生成されているのが確認できます。
このlaradockディレクトリがlaradockのDocker環境になります。
次にtest-projectディレクトリの中にCakePHPのプロジェクトディレクトリを配置していくので、そのディレクトリを作成しておきましょう。
mkdir src
Laradockの設定ファイルを編集する
laradockディレクトリに移動して、.envファイルを作成していきます。
laradockディレクトリの中に.env.exampleファイルが存在するので、こちらを複製して.envファイルを作成していきましょう。
cd laradock
cp .env.example .env
.envファイルは下記の通りに修正していきます。
APP_CODE_PATH_HOST=../src/
DATA_PATH_HOST=../.laradock/data
COMPOSER_PROJECT_NAME=test-project
PHP_VERSION=7.4
PHP_FPM_INSTALL_INTL=true
MYSQL_VERSION=5.7
MYSQL_DATABASE=testdb
MYSQL_USER=testuser
MYSQL_PASSWORD=password
APP_CODE_PATH_HOST
CakePHPプロジェクトの配置場所を指定します。
作成したsrcディレクトリのパスを指定しましょう。
APP_CODE_PATH_HOST=../src/
DATA_PATH_HOST
プロジェクトのデータ格納場所を指定します。
こちらをデフォルトのグローバルな場所に設定すると複数プロジェクトのデータ管理が上手くできなくなってしまうので、プロジェクトのディレクトリ直下を指定してあげます。
DATA_PATH_HOST=../.laradock/data
COMPOSER_PROJECT_NAME
プロジェクトのdockerコンテナ名を指定してあげます。
今回作成したプロジェクトディレクトリ名と同じものを指定することにしましょう。
COMPOSER_PROJECT_NAME=test-project
PHP_VERSION
プロジェクトの内でのPHPのバージョンを指定します。
今回はPHP7.4を指定してあげましょう。
PHP_VERSION=7.4
PHP_FPM_INSTALL_INTL
CakePHPはintl拡張モジュールが必要なので、こちらの値がtrue
になっていることを確認します。
false
になっている場合は、true
に指定しましょう。
PHP_FPM_INSTALL_INTL=true
MYSQL_VERSION
プロジェクト内でのMySQLのバージョンを指定します。
今回はMySQL5.7を指定していきます。
MYSQL_VERSION=5.7
MYSQL_DATABASE
MySQLで作成するデータベース名を指定します。
MYSQL_DATABASE=testdb
MYSQL_USER
MySQLのユーザーを指定します。
MYSQL_USER=testuser
MYSQL_PASSWORD
MySQLユーザーのパスワードを指定します。
MYSQL_PASSWORD=password
rootディレクトリをCakePHP用に設定する
LaravelとCakePHPではrootディレクトリが違うので、rootディレクトリの設定をCakePHP用に修正する必要があります。
laradockディレクトリの中にあるnginx>sitesディレクトリの中にdefault.confファイルが存在します。
default.confファイルの13行目あたりを下記の通りに修正します。
root /var/www/webroot;
Dockerコンテナを起動する
.envファイルが作成できたら、docker-compose upコマンドでコンテナを起動していきましょう。
また、-dオプションを指定することで、バックグラウンドでコンテナを起動することができますl。
docker-compose up -d nginx mysql phpmyadmin mailhog
起動が完了したら、下記のコマンドでコンテナがちゃんと起動しているか確認しましょう。
docker ps --format "table {{.Names}}"
NAMES
test-project_nginx_1
test-project_php-fpm_1
test-project_workspace_1
test-project_phpmyadmin_1
test-project_mysql_1
test-project_mailhog_1
test-project_docker-in-docker_1
下記の7つのコンテナが起動していることが確認できましたね。
- nginx
- php-fpm
- workspace
- phpmyadmin
- mysql
- mailhog
- docker-in-docker
CakePHPのインストール
workspaceコンテナにアクセスして、CakePHPをインストールしていきましょう。
docker-compose exec --user=laradock workspace bash
$ composer self-update && composer create-project --prefer-dist cakephp/app:^3.8 test-project ./
$ exit
無事にインストールが完了したら、lsコマンドでCakePHPのプロジェクトディレクトリ一式があることを確認しておきましょう。
CakePHPとデータベースを紐付ける
最後にCakePHPでDBを使えるように設定していきます。
srcディレクトリのconfigディレクトリ内のapp.phpファイルとapp_local.phpを下記のように修正します。
return [
'' => [
'host' => 'msyql',
'username' => 'testuser',
'password' => 'password',
'database' => 'testdb',
],
];
Laradockの設定ファイル(.envファイル)で設定した内容に合わせて、修正します。
これでLaradockを使って、CakePHPの開発環境構築が完了しました。
ブラウザで確認
構築した環境をブラウザで確認しておきましょう。
CakePHP
メインのCakePHPの初期画面です。
http://localhostで確認することができます。
無事に初期画面が表示されていますね。
また、Databaseの項目のところには、「CakePHP is able to connect to the database.」 と表示されているので、Laradockで構築したデータベースとの接続も上手くいってそうですね。
phpMyAdmin
phpMyAdminはデフォルトのままだと8081番ポートに設定されているので、http://localhost:8081でアクセスすることができます。
phpMyAdminのログイン画面が表示されます。
ログイン情報はLaradockの.envファイルで指定した下記の項目になります。
- サーバ:mysql
- ユーザー名:MYSQL_USERの値
- パスワード:MYSQL_PASSWORDの値
無事にphpMyAdminの管理画面が表示されましたね。
MailHog
MailHogはデフォルトでは8025番ポートに設定されているので、http://localhost:8025でアクセスすることができます。
これで無事に環境構築できていることが確認できましたね。
Dockerコンテナの停止
開発終了時には、下記のコマンドでDockerコンテナを停止させておきましょう。
docker-compose stop
再度、コンテナを起動させたい時には下記コマンドで起動することができます。
docker-compose up -d nginx mysql phpmyadmin mailhog
まとめ
Laradockを使ってCakePHPの開発環境を構築する方法を紹介してきました。
Laradockを使えば、LaravelやCakePHPに限らず他のPHPフレームワークや素のPHPの開発環境も簡単に構築できそうですね。
ぜひ、Laradockを使ってPHPの開発環境を構築する一助にしてくださいね。