CakePHP 5 の開発環境を構築してみる
これから CakePHP 5 を始める方へ。
環境構築は初学者の方にとって、挫折ポイントになりやすいと思います。(私もいつも苦心しています…)
まだ全てを理解できはいませんが、なるべく分かるように書いてみたいと思います!
環境
- Docker
- php: 8.2
- CakePHP: 5.*
Docker 環境を構築
ファイル構成
myproject/
└ config/
└ docker/
├ web/
│ └ Dockerfile
└ docker-compose.yml
以下はファイルの内容です。
MySQL のユーザー、パスワード等は適宜変更します。
FROM php:8.2-apache
COPY /usr/bin/composer /usr/bin/composer
RUN apt update \
# Zip
&& apt install -y vim unzip \
# MySQL
&& docker-php-ext-install pdo_mysql \
# intl
&& apt install -y libicu-dev \
&& docker-php-ext-install intl \
# Apache mod_rewrite 有効化
&& a2enmod rewrite
version: "3"
services:
myproject-web:
container_name: myproject-web
build:
context: ./web
dockerfile: Dockerfile
depends_on:
- myproject-db
ports:
- "80:80"
volumes:
- "../../:/var/www/html"
myproject-db:
container_name: myproject-db
image: mysql:5.7
volumes:
- "./initdb:/docker-entrypoint-initdb.d"
environment:
MYSQL_DATABASE: myproject
MYSQL_USER: myproject-user
MYSQL_PASSWORD: i3b26syt
MYSQL_ROOT_PASSWORD: s95x4y7w
myproject-pma:
container_name: myproject-pma
image: phpmyadmin/phpmyadmin:5.2
depends_on:
- myproject-db
ports:
- "8080:80"
environment:
PMA_HOST: myproject-db
PMA_USER: root
PMA_PASSWORD: s95x4y7w
下記のサイトを参考にさせていただいてます↓
コンテナを作成
docker-compose コマンドを使ってコンテナを作成します。
cd /myproject/config/docker
docker-compose -p myproject up -d
-p
オプションは簡単にいうと、プロジェクト名(myproject)を指定するためのオプションです。
up
オプションでコンテナを起動、-d
オプションをつけることでコンテナをバックグラウンドで実行できます。
詳しくは公式ドキュメントをご覧ください。
-p
オプションについて↓
up
,-d
オプションについて↓
CakePHP 5 をインストール
Visual Studio Code の Docker 拡張機能を使います。
- VS Code 左側のサイドバーから Docker アイコンを選択し、Docker 拡張機能を表示します。
- CONTAINERS の
myproject-web
を右クリックして、Attach Shell
を選択します。 - VS Code 上でターミナルが開きます。下記のコマンドを実行してみましょう。
mkdir /var/www/cake5
cd /var/www/cake5
composer create-project --prefer-dist cakephp/app . "5.*"
cd /var/www/html
cp -prT /var/www/cake5 /var/www/html
rm -rf /var/www/cake5
composer create-project
は新しいプロジェクトを作成して、そのプロジェクトにライブラリやパッケージをインストールします。
(ちなみに、既存のプロジェクトに新しくライブラリやパッケージを追加するには composer require
を使用します。)
--prefer-dist
は zip でダウンロードするオプションで、ダウンロード時間が短くなるみたいです。
データベース接続設定
インストールができたら、データベースの接続情報を docker-compose.yml で設定した内容に変更します。
'Datasources' => [
'default' => [
'host' => 'myproject-db',
...
'username' => 'myproject-user',
'password' => 'i3b26syt',
'database' => 'myproject',
http://localhost 等にアクセスすると、CakePHP 5 のウェルカムページが表示されるはずです。
私のつまづきポイント
1. なぜか CakePHP 5 のウェルカムページが表示されない
Docker のコンテナは起動してるいし、CakePHP 5 もインストールできたのに表示されない(404エラー)…
よく見たら、ファイル構成
を間違えていました。
2. データベース接続エラー
原因は、app_local.php での設定ミス。('database' => 'myproject-db'
になっていた等)
あとは、よくわからないエラーが出る時、ほぼほぼタイプミスでした。
特にデータベース接続時のパスワードなど、絶対に間違えてはいけないものは素直にコピペしましょう…
Discussion