Sign inSign up

thzo/wpfpm

By thzo

Updated over 1 year ago

wordpress 7.4.30fpm

Image
0

3.0K

thzo/wpfpm repository overview

NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"

PLEASE DO NOT EDIT IT DIRECTLY.

FROM php:8.3-fpm-alpine

persistent dependencies

RUN set -eux;
apk add --no-cache \

in theory, docker-entrypoint.sh is POSIX-compliant, but priority is a working, consistent image

	bash \

Ghostscript is required for rendering PDF previews

	ghostscript \

Alpine package for "imagemagick" contains ~120 .so files, see: https://github.com/docker-library/wordpress/pull/497

	imagemagick \
;

install the PHP extensions we need (https://make.wordpress.org/hosting/handbook/handbook/server-environment/#php-extensions)

RUN set -ex;

apk add --no-cache --virtual .build-deps
$PHPIZE_DEPS
freetype-dev
icu-dev
imagemagick-dev libheif-dev
libavif-dev
libjpeg-turbo-dev
libpng-dev
libwebp-dev
libzip-dev
;

docker-php-ext-configure gd
--with-avif
--with-freetype
--with-jpeg
--with-webp
;
docker-php-ext-install -j "$(nproc)"
bcmath
exif
gd
intl
mysqli
zip
; \

WARNING: imagick is likely not supported on Alpine: https://github.com/Imagick/imagick/issues/328

https://pecl.php.net/package/imagick

https://github.com/Imagick/imagick/commit/5ae2ecf20a1157073bad0170106ad0cf74e01cb6 (causes a lot of build failures, but strangely only intermittent ones 馃)

see also https://github.com/Imagick/imagick/pull/641

this is "pecl install imagick-3.7.0", but by hand so we can apply a small hack / part of the above commit

curl -fL -o imagick.tgz 'https://pecl.php.net/get/imagick-3.7.0.tgz'; \
echo '5a364354109029d224bcbb2e82e15b248be9b641227f45e63425c06531792d3e *imagick.tgz' | sha256sum -c -; \
tar --extract --directory /tmp --file imagick.tgz imagick-3.7.0; \
grep '^//#endif$' /tmp/imagick-3.7.0/Imagick.stub.php; \
test "$(grep -c '^//#endif$' /tmp/imagick-3.7.0/Imagick.stub.php)" = '1'; \
sed -i -e 's!^//#endif$!#endif!' /tmp/imagick-3.7.0/Imagick.stub.php; \
grep '^//#endif$' /tmp/imagick-3.7.0/Imagick.stub.php && exit 1 || :; \
docker-php-ext-install /tmp/imagick-3.7.0; \
rm -rf imagick.tgz /tmp/imagick-3.7.0; \
\

some misbehaving extensions end up outputting to stdout 馃檲 (https://github.com/docker-library/wordpress/issues/669#issuecomment-993945967)

out="$(php -r 'exit(0);')"; \
[ -z "$out" ]; \
err="$(php -r 'exit(0);' 3>&1 1>&2 2>&3)"; \
[ -z "$err" ]; \
\
extDir="$(php -r 'echo ini_get("extension_dir");')"; \
[ -d "$extDir" ]; \
runDeps="$( \
	scanelf --needed --nobanner --format '%n#p' --recursive "$extDir" \
		| tr ',' '\n' \
		| sort -u \
		| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
)"; \
apk add --no-network --virtual .wordpress-phpexts-rundeps $runDeps; \
apk del --no-network .build-deps; \
\
! { ldd "$extDir"/*.so | grep 'not found'; }; \

check for output like "PHP Warning: PHP Startup: Unable to load dynamic library 'foo' (tried: ...)

err="$(php --version 3>&1 1>&2 2>&3)"; \
[ -z "$err" ]

see https://secure.php.net/manual/en/opcache.installation.php

RUN set -eux;
docker-php-ext-enable opcache;
{
echo 'opcache.memory_consumption=128';
echo 'opcache.interned_strings_buffer=8';
echo 'opcache.max_accelerated_files=4000';
echo 'opcache.revalidate_freq=2';
} > /usr/local/etc/php/conf.d/opcache-recommended.ini

https://wordpress.org/support/article/editing-wp-config-php/#configure-error-logging

RUN { \

https://www.php.net/manual/en/errorfunc.constants.php

https://github.com/docker-library/wordpress/issues/420#issuecomment-517839670

	echo 'error_reporting = E_ERROR | E_WARNING | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_RECOVERABLE_ERROR'; \
	echo 'display_errors = Off'; \
	echo 'display_startup_errors = Off'; \
	echo 'log_errors = On'; \
	echo 'error_log = /dev/stderr'; \
	echo 'log_errors_max_len = 1024'; \
	echo 'ignore_repeated_errors = On'; \
	echo 'ignore_repeated_source = Off'; \
	echo 'html_errors = Off'; \
} > /usr/local/etc/php/conf.d/error-logging.ini

VOLUME /var/www/html

Tag summary

Content type

Image

Digest

sha256:7159b3d1d

Size

65.2 MB

Last updated

over 1 year ago

docker pull thzo/wpfpm