DockerでCakePHP4の環境構築
題の通り、DockerでCakePHP 4 (4.1.6) の環境構築をしたので手順を残す。
(何回か同じことをしている。その都度手順を忘れてビルド時にエラーを吐かれまくるので記録を残すことにした。)
docker-compose.yml
version: "3.7"
services:
nginx:
image: "nginx:1.18"
container_name: "cakephp-nginx"
env_file:
- "./.env"
volumes:
- "./nginx/conf.d:/etc/nginx/conf.d"
- "./app:/usr/share/nginx/html"
ports:
- "8080:80"
php-fpm:
image: "php-fpm:cake-php"
build:
context: "./"
dockerfile: "Dockerfile.php-fpm"
container_name: "cakephp-php-fpm"
env_file:
- "./.env"
volumes:
- "./app:/var/www/html"
mysql:
image: "mysql:8.0"
container_name: "cakephp-mysql"
env_file:
- "./.env"
.env
MYSQL_ROOT_PASSWORD=password
MYSQL_USER=cakephp
MYSQL_PASSWORD=cakephp
MYSQL_DATABASE=cakephp
Dockerfile.php-fpm
FROM "php:7.4-fpm"
RUN apt update && apt upgrade -y && apt install -y \
apt-utils \
libicu-dev \
libzip-dev \
unzip \
wget
RUN docker-php-ext-install \
intl \
pdo_mysql \
zip
RUN cd /usr/local/src \
&& wget https://raw.githubusercontent.com/composer/getcomposer.org/bfd95e2a4383ee9cf7c058c2df29d7acb5f86d77/web/installer \
--output-document=./composer-setup.php \
&& echo '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3 *composer-setup.php' > ./installer.sha384sum \
&& sha384sum -c ./installer.sha384sum \
&& php ./composer-setup.php \
--filename=composer \
--install-dir=/usr/local/bin \
--quiet \
&& rm ./composer-setup.php ./installer.sha384sum
WORKDIR /var/www/html
RUN composer create-project --prefer-dist cakephp/app:~4.1.0 ./
nginx/conf.d/cakephp.localhost.conf
upstream php-fpm {
server php-fpm:9000;
}
server {
server_name cakephp.localhost;
listen 80;
root /usr/share/nginx/html/webroot;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass php-fpm;
fastcgi_index index.php;
fastcgi_intercept_errors on;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
}
}
app/config/app_local.php
<?php
return [
'debug' => filter_var(env('DEBUG', true), FILTER_VALIDATE_BOOLEAN),
'Security' => [
'salt' => env('SECURITY_SALT', '84e4c6e091f6e066e06096fede621b15e4f4b99549ded32f43d42b861bf3e4e9'),
],
'Datasources' => [
'default' => [
'host' => 'mysql',
'username' => env('MYSQL_USER'),
'password' => env('MYSQL_PASSWORD'),
'database' => env('MYSQL_DATABASE'),
],
],
];
ぼやき
https://getcomposer.org/download/ のインストール用スクリプトをDockerfileにそのまま使っていたが、Composerの最新版が更新されるとインストーラファイルのハッシュ値が変わってしまうのでビルドエラーになる。
かといってチェック用のハッシュ値までHTTP経由で取得するのも本末転倒な気がするので、取得するインストーラファイルをコミットハッシュで固定して取得するようにした。
この記事が気に入ったらサポートをしてみませんか?