FrankenPHPは先日v1.0がリリースされたばかりの、PHPとWebサーバがセットになったDockerイメージです。
ちょうどローカルでWordPressを動かしたいタイミングがあったので試してみました
基本的にはdunglas/frankenphp-wordpressにひな形があるのでこれを参考にします。
まずはDockerfile。
ほぼひな形通りですが、PHP8.3以上の環境だとImagickのビルドでコケるので、今回は明示的に sha-2eabec8-php8.2
を指定しています。
FROM dunglas/frankenphp:sha-2eabec8-php8.2
# install the PHP extensions we need (https://make.wordpress.org/hosting/handbook/handbook/server-environment/#php-extensions)
RUN install-php-extensions \
bcmath \
exif \
gd \
intl \
mysqli \
zip \
imagick \
opcache
COPY --from=wordpress /usr/local/etc/php/conf.d/* /usr/local/etc/php/conf.d/
COPY --from=wordpress /usr/local/bin/docker-entrypoint.sh /usr/local/bin/
COPY --from=wordpress --chown=root:root /usr/src/wordpress /app/public
VOLUME /app/public
RUN sed -i \
-e 's/\[ "$1" = '\''php-fpm'\'' \]/\[\[ "$1" == frankenphp* \]\]/g' \
-e 's/php-fpm/frankenphp/g' \
-e 's#/usr/src/wordpress#/app/public#g' \
/usr/local/bin/docker-entrypoint.sh
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
CMD ["frankenphp", "run", "--config", "/etc/caddy/Caddyfile"]
docker-compose.ymlはそのままでも大丈夫そうだけど、好みの問題で下記のようにしました
version: '3.1'
services:
wordpress:
build: .
ports:
- 80:80
- 443:443
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: docker
WORDPRESS_DB_PASSWORD: docker
WORDPRESS_DB_NAME: dbname
volumes:
- ./:/app/public
db:
image: mysql
environment:
MYSQL_DATABASE: dbname
MYSQL_USER: docker
MYSQL_PASSWORD: docker
MYSQL_RANDOM_ROOT_PASSWORD: '1'
ports:
- 3306:3306
上記2ファイルをドキュメントルートの階層に置いて、起動すればlocalhostでアクセスできました。
docker compose up