🌿

CakePHP 5 の開発環境を構築してみる

2023/10/09に公開

これから CakePHP 5 を始める方へ。
環境構築は初学者の方にとって、挫折ポイントになりやすいと思います。(私もいつも苦心しています…)
まだ全てを理解できはいませんが、なるべく分かるように書いてみたいと思います!

環境

  • Docker
  • php: 8.2
  • CakePHP: 5.*

Docker 環境を構築

ファイル構成

myproject/
 └ config/
    └ docker/
       ├ web/
       │ └ Dockerfile
       └ docker-compose.yml

以下はファイルの内容です。
MySQL のユーザー、パスワード等は適宜変更します。

Dockerfile
FROM php:8.2-apache

COPY --from=composer /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
docker-compose.yml
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

下記のサイトを参考にさせていただいてます↓
https://tt-computing.com/cake5-docker-shellscript

コンテナを作成

docker-compose コマンドを使ってコンテナを作成します。

 cd /myproject/config/docker
 docker-compose -p myproject up -d

-pオプションは簡単にいうと、プロジェクト名(myproject)を指定するためのオプションです。
upオプションでコンテナを起動、-dオプションをつけることでコンテナをバックグラウンドで実行できます。

詳しくは公式ドキュメントをご覧ください。
-pオプションについて↓
https://docs.docker.jp/engine/reference/commandline/compose.html#p
up,-dオプションについて↓
https://docs.docker.jp/compose/reference/up.html

CakePHP 5 をインストール

Visual Studio Code の Docker 拡張機能を使います。

  1. VS Code 左側のサイドバーから Docker アイコンを選択し、Docker 拡張機能を表示します。
  2. CONTAINERS の myproject-web を右クリックして、Attach Shellを選択します。
  3. 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 で設定した内容に変更します。

config/app_local.php
'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