Home

Awesome

PHP Docker Container Images

Build Status Docker Pulls Docker Stars

Table of Contents

Docker Images

❗For better reliability we release images with stability tags (wodby/php:8-X.X.X) which correspond to git tags. We strongly recommend using images only with stability tags.

About images:

Supported tags and respective Dockerfile links:

-dev

Images with -dev tag have a few differences:

-dev-macos

Same as -dev but the default user/group wodby has uid/gid 501/20 to match the macOS default user/group ids.

Supported architectures

All images built for linux/amd64 and linux/arm64

Environment Variables

PHP and PHP-FPM configuration

The default configuration not recommended for use for production environment:

Variable8.38.28.1
PHP_ALLOW_URL_FOPENOnOnOn
PHP_APCU_ENABLE_CLI000
PHP_APCU_ENABLED111
PHP_APCU_ENTRIES_HINT409640964096
PHP_APCU_COREDUMP_UNMAP000
PHP_APCU_GC_TTL360036003600
PHP_APCU_PRELOAD_PATHNULLNULLNULL
PHP_APCU_SERIALIZER
PHP_APCU_SHM_SEGMENTS111
PHP_APCU_SHM_SIZE128M128M128M
PHP_APCU_SLAM_DEFENSE111
PHP_APCU_TTL000
PHP_APCU_USE_REQUEST_TIME111
PHP_ASSERT_ACTIVEOnOnOn
PHP_AUTO_PREPEND_FILE
PHP_AUTO_APPEND_FILE
PHP_BROTLI_OUTPUT_COMPRESSION000
PHP_BROTLI_OUTPUT_COMPRESSION_LEVEL-1-1-1
PHP_CLI_MEMORY_LIMIT-1-1-1
PHP_DATE_TIMEZONEUTCUTCUTC
PHP_DEFAULT_SOCKET_TIMEOUT606060
PHP_DISABLE_FUNCTIONS
PHP_DISABLE_CLASSES
PHP_DISPLAY_STARTUP_ERRORSOnOnOn
PHP_ERROR_REPORTINGE_ALLE_ALLE_ALL
PHP_EXPOSEOffOffOff
PHP_EXTENSIONS_DISABLExdebug,xhprof,spxxdebug,xhprof,spxxdebug,xhprof,spx
PHP_FPM_CLEAR_ENVyesyesyes
PHP_FPM_ENV_VARS
PHP_FPM_LOG_LEVELnoticenoticenotice
PHP_FPM_PMdynamicdynamicdynamic
PHP_FPM_PM_MAX_CHILDREN888
PHP_FPM_PM_MAX_REQUESTS500500500
PHP_FPM_PM_MAX_SPARE_SERVERS333
PHP_FPM_PM_MIN_SPARE_SERVERS111
PHP_FPM_PM_STATUS_PATH
PHP_FPM_REQUEST_SLOWLOG_TIMEOUT
PHP_FPM_PM_START_SERVERS222
PHP_FPM_USERwww-datawww-datawww-data
PHP_FPM_GROUPwww-datawww-datawww-data
PHP_GRPC_ENABLE_FORK_SUPPORT111
PHP_GRPC_LOG_FILENAME/proc/self/fd/2/proc/self/fd/2/proc/self/fd/2
PHP_GRPC_POLL_STRATEGYepoll1epoll1epoll1
PHP_GRPC_TRACE
PHP_GRPC_VERBOSITYerrorerrorerror
PHP_IGBINARY_COMPACT_STRINGSOnOnOn
PHP_LOG_ERRORSOnOnOn
PHP_LOG_ERRORS_MAX_LEN000
PHP_MAX_EXECUTION_TIME120120120
PHP_MAX_FILE_UPLOADS202020
PHP_MAX_INPUT_TIME606060
PHP_MAX_INPUT_VARS200020002000
PHP_MEMORY_LIMIT512M512M512M
PHP_MYSQLI_CACHE_SIZE200020002000
PHP_NEWRELIC_LICENSE
see all newrelic ext options8.x newrelic8.x newrelic8.x newrelic
PHP_OPCACHE_ENABLE111
PHP_OPCACHE_ENABLE_CLI000
PHP_OPCACHE_VALIDATE_TIMESTAMPS111
PHP_OPCACHE_REVALIDATE_FREQ222
PHP_OPCACHE_MAX_ACCELERATED_FILES400040004000
PHP_OPCACHE_MEMORY_CONSUMPTION128128128
PHP_OPCACHE_INTERNED_STRINGS_BUFFER888
PHP_OPCACHE_FAST_SHUTDOWN---
PHP_OPCACHE_HUGE_CODE_PAGES000
PHP_OPCACHE_PRELOAD---
PHP_OPCACHE_PRELOAD_USERwww-datawww-datawww-data
PHP_OPCACHE_JITtracingtracingtracing
PHP_OPCACHE_JIT_BUFFER_SIZE000
PHP_OUTPUT_BUFFERING409640964096
PHP_PCOV_ENABLED000
see all pcov ext options8.x pcov8.x pcov8.x pcov
PHP_PDO_MYSQL_CACHE_SIZE---
PHP_PHAR_READONLY111
PHP_PHAR_REQUIRE_HASH111
PHP_PHAR_CACHE_LIST
PHP_POST_MAX_SIZE32M32M32M
PHP_REALPATH_CACHE_SIZE4096k4096k4096k
PHP_REALPATH_CACHE_TTL120120120
PHP_SENDMAIL_PATH/usr/bin/msmtp -t -i/usr/bin/msmtp -t -i/usr/bin/dos2unix -u | /usr/bin/msmtp -t -i
PHP_MAIL_MIXED_LF_AND_CRLFOffOff-
PHP_SESSION_SAVE_HANDLERfilesfilesfiles
PHP_SHORT_OPEN_TAG111
PHP_SPX_DATA_DIR/mnt/files/spx/mnt/files/spx/mnt/files/spx
PHP_SPX_HTTP_ENABLED000
PHP_SPX_HTTP_KEY
PHP_SPX_HTTP_IP_WHITELIST
see all sqlsrv ext options8.x sqlsrv8.x sqlsrv8.x sqlsrv
see all session options8.3 session8.2 session8.1 session
see all xhprof options8.x xhprof8.x xhprof8.x xhprof
PHP_UPLOAD_MAX_FILESIZE32M32M32M
PHP_XDEBUG_MODEoffoffoff
see all xdebug ext options8.x xdebug8.x xdebug8.x xdebug
PHP_ZEND_ASSERTIONS111

"-" - Not available for this version

Additional configuration

VariableDefault value
GIT_USER_EMAILwodby@example.com
GIT_USER_NAMEwodby
HTTP_PROXY
SSH_PRIVATE_KEY
SSH_DISABLE_STRICT_KEY_CHECKING
SSHD_GATEWAY_PORTSno
SSHD_HOST_KEYS_DIR/etc/ssh
SSHD_LOG_LEVELINFO
SSHD_PASSWORD_AUTHENTICATIONno
SSHD_PERMIT_USER_ENVyes
SSHD_USE_DNSyes
SSMTP_MAILHUBopensmtpd:25
SSMTP_FROM_LINE_OVERRIDEYes
SSMTP_USE_TLSNo
MSMTP_PORT25
MSMTP_TLSoff
MSMTP_LOG
MSMTP_LOGFILE/proc/self/fd/2
MSMTP_AUTHoff
MSMTP_HOSTopensmtpd
MSMTP_ADD_MISSING_DATE_HEADERon

Build arguments

ArgumentDefault value
PHP_VER
PHP_DEV
WODBY_GROUP_ID1000
WODBY_USER_ID1000

Change WODBY_USER_ID and WODBY_GROUP_ID mainly for local dev version of images, if it matches with existing system user/group ids the latter will be deleted.

PHP Extensions

Extensions xdebug, xhprof and spx disabled by default, to change it override the default env var PHP_EXTENSIONS_DISABLE=xdebug,xhprof,spx.

Extension8.38.28.1
amqp2.1.12.1.12.1.1
apcu5.1.235.1.235.1.23
ast1.1.11.1.11.1.1
bcmath
brotli0.14.20.14.20.14.2
bz2
calendar
Core
ctype
curl
date
dom
ds1.5.01.5.01.5.0
exif
event3.0.83.0.83.0.8
fileinfo
filter
ftp--
gd
grpc1.60.01.60.01.60.0
hash
iconv
igbinary3.2.153.2.153.2.15
imagickmaster3.7.03.7.0
imap
intl
json
ldap
libxml
mbstring
memcached3.2.03.2.03.2.0
mongodb1.17.11.17.11.17.1
mysqli
mysqlnd
newreliclatestlatestlatest
OAuth2.0.72.0.72.0.7
openssl
opentelemetry1.0.01.0.01.0.0
pcovlatestlatestlatest
pcntl
pcre
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
pdo_sqlsrv*5.11.15.11.15.11.1
pgsql
Phar
posix
rdkafka6.0.36.0.36.0.3
readline
redis6.0.26.0.26.0.2
Reflection
session
SimpleXML
smbclient1.1.11.1.11.1.1
soap
sockets
sodium
SPL
spx0.4.150.4.150.4.15
sqlite3
sqlsrv*5.11.15.11.15.11.1
standard
tidy
tokenizer
uploadprogress2.0.22.0.22.0.2
uuid1.2.01.2.01.2.0
xdebug3.3.23.3.23.3.2
xhprof2.3.92.3.92.3.9
xml
xmlreader
xmlwriter
xsl
yaml2.2.32.2.32.2.3
Zend OPcache
zip
zlib

Legend:

Tools

Tool8.38.28.1
Composerlatestlatestlatest

Xdebug

By default, xdebug mode set to off, which has close to 0 overhead. If you want to disable the extension completely set PHP_EXTENSIONS_DISABLE=xdebug.

Changelog

Changes per stability tag reflected in git tags description under releases.

Crond

You can run Crond with this image changing the command to sudo -E crond -f -d 0 and mounting a crontab file to ./crontab:/etc/crontabs/www-data. Example crontab file contents:

# min	hour	day	month	weekday	command
*/1	*	*	*	*	echo "test" > /mnt/files/cron

SSHD

You can run SSHD with this image by changing the command to sudo /usr/sbin/sshd -De and mounting authorized public keys to /home/wodby/.ssh/authorized_keys

Adding SSH key

You can add a private SSH key to the container by mounting it to /home/wodby/.ssh/id_rsa

Users and permissions

Default container user is wodby:wodby (UID/GID 1000). PHP-FPM runs from www-data:www-data user (UID/GID 82) by default. User wodby is a part of www-data group.

Codebase volume $APP_ROOT (/var/www/html) owned by wodby:wodby. Files volume $FILES_DIR (/mnt/files) owned by www-data:www-data with 775 mode.

See https://github.com/wodby/php/issues/22 for more details.

Helper scripts

Complete PHP-based stacks

Images based on wodby/php

Orchestration Actions

Usage:

make COMMAND [params ...]

commands:
    migrate
    check-ready [host max_try wait_seconds delay_seconds]
    git-clone url [branch]
    git-checkout target [is_hash]   
    files-import source
    files-link public_dir 
    update-keys
    walter

default params values:
    is_hash 0
    branch "" Branch, tag or hash commit