- Docker Images
- Environment Variables
- Build arguments
- PHP Extensions
- Tools
- Xdebug
- Changelog
- Users and permissions
- Crond
- SSHD
- Adding SSH key
- Complete PHP-based stack
- Images based on
wodby/php - Orchestration Actions
❗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:
- All images based on Alpine Linux
- Base image: official php
- GitHub actions builds
- Docker Hub
Supported tags and respective Dockerfile links:
8.5,8,latest(8/Dockerfile)8.4(8/Dockerfile)8.3(8/Dockerfile)8.2(8/Dockerfile)8.1(8/Dockerfile)8.5-dev,8-dev,dev(8/Dockerfile)8.4-dev(8/Dockerfile)8.3-dev(8/Dockerfile)8.2-dev(8/Dockerfile)8.1-dev(8/Dockerfile)8.5-dev-macos,8-dev-macos,dev-macos(8/Dockerfile)8.4-dev-macos(8/Dockerfile)8.3-dev-macos(8/Dockerfile)8.2-dev-macos(8/Dockerfile)8.1-dev-macos(8/Dockerfile)
Images with -dev tag have a few differences:
sudoallowed for all commands forwodbyuser- PHP source code available under
/usr/src/php.tar.xz PHP_FPM_CLEAR_ENVis set tonoby default- Additional packages installed: yarn and npm
Same as -dev but the default user/group wodby has uid/gid 501/20 to match the macOS default user/group ids.
All images built for linux/amd64 and linux/arm64
The default configuration is not recommended for use for production environment:
| Variable | 8.5 | 8.4 | 8.3 | 8.2 | 8.1 |
|---|---|---|---|---|---|
PHP_ALLOW_URL_FOPEN |
On |
On |
On |
On |
On |
PHP_APCU_ENABLE_CLI |
0 |
0 |
0 |
0 |
0 |
PHP_APCU_ENABLED |
1 |
1 |
1 |
1 |
1 |
PHP_APCU_ENTRIES_HINT |
4096 |
4096 |
4096 |
4096 |
4096 |
PHP_APCU_COREDUMP_UNMAP |
0 |
0 |
0 |
0 |
0 |
PHP_APCU_GC_TTL |
3600 |
3600 |
3600 |
3600 |
3600 |
PHP_APCU_PRELOAD_PATH |
NULL |
NULL |
NULL |
NULL |
NULL |
PHP_APCU_SERIALIZER |
|||||
PHP_APCU_SHM_SEGMENTS |
1 |
1 |
1 |
1 |
1 |
PHP_APCU_SHM_SIZE |
128M |
128M |
128M |
128M |
128M |
PHP_APCU_SLAM_DEFENSE |
1 |
1 |
1 |
1 |
1 |
PHP_APCU_TTL |
0 |
0 |
0 |
0 |
0 |
PHP_APCU_USE_REQUEST_TIME |
1 |
1 |
1 |
1 |
1 |
PHP_ASSERT_ACTIVE |
- | - | - | On |
On |
PHP_AUTO_PREPEND_FILE |
|||||
PHP_AUTO_APPEND_FILE |
|||||
PHP_BROTLI_OUTPUT_COMPRESSION |
0 |
0 |
0 |
0 |
0 |
PHP_BROTLI_OUTPUT_COMPRESSION_LEVEL |
-1 |
-1 |
-1 |
-1 |
-1 |
PHP_CLI_MEMORY_LIMIT |
-1 |
-1 |
-1 |
-1 |
-1 |
PHP_DATE_TIMEZONE |
UTC |
UTC |
UTC |
UTC |
UTC |
PHP_DEFAULT_SOCKET_TIMEOUT |
60 |
60 |
60 |
60 |
60 |
PHP_DISABLE_FUNCTIONS |
|||||
PHP_DISABLE_CLASSES |
|||||
PHP_DISPLAY_STARTUP_ERRORS |
On |
On |
On |
On |
On |
PHP_ERROR_REPORTING |
E_ALL |
E_ALL |
E_ALL |
E_ALL |
E_ALL |
PHP_EXPOSE |
Off |
Off |
Off |
Off |
Off |
PHP_EXTENSIONS_DISABLE |
xdebug,xhprof,spx |
xdebug,xhprof,spx |
xdebug,xhprof,spx |
xdebug,xhprof,spx |
xdebug,xhprof,spx |
PHP_FPM_CLEAR_ENV |
yes |
yes |
yes |
yes |
yes |
PHP_FPM_ENV_VARS |
|||||
PHP_FPM_LOG_LEVEL |
notice |
notice |
notice |
notice |
notice |
PHP_FPM_PM |
dynamic |
dynamic |
dynamic |
dynamic |
dynamic |
PHP_FPM_PM_MAX_CHILDREN |
8 |
8 |
8 |
8 |
8 |
PHP_FPM_PM_MAX_REQUESTS |
500 |
500 |
500 |
500 |
500 |
PHP_FPM_PM_MAX_SPARE_SERVERS |
3 |
3 |
3 |
3 |
3 |
PHP_FPM_PM_MIN_SPARE_SERVERS |
1 |
1 |
1 |
1 |
1 |
PHP_FPM_PM_STATUS_PATH |
|||||
PHP_FPM_REQUEST_SLOWLOG_TIMEOUT |
|||||
PHP_FPM_PM_START_SERVERS |
2 |
2 |
2 |
2 |
2 |
PHP_FPM_USER |
www-data |
www-data |
www-data |
www-data |
www-data |
PHP_FPM_GROUP |
www-data |
www-data |
www-data |
www-data |
www-data |
PHP_GRPC_ENABLE_FORK_SUPPORT |
1 |
1 |
1 |
1 |
1 |
PHP_GRPC_LOG_FILENAME |
/proc/self/fd/2 |
/proc/self/fd/2 |
/proc/self/fd/2 |
/proc/self/fd/2 |
/proc/self/fd/2 |
PHP_GRPC_POLL_STRATEGY |
epoll1 |
epoll1 |
epoll1 |
epoll1 |
epoll1 |
PHP_GRPC_TRACE |
|||||
PHP_GRPC_VERBOSITY |
error |
error |
error |
error |
error |
PHP_IGBINARY_COMPACT_STRINGS |
On |
On |
On |
On |
On |
PHP_LOG_ERRORS |
On |
On |
On |
On |
On |
PHP_LOG_ERRORS_MAX_LEN |
0 |
0 |
0 |
0 |
0 |
PHP_MAX_EXECUTION_TIME |
120 |
120 |
120 |
120 |
120 |
PHP_MAX_FILE_UPLOADS |
20 |
20 |
20 |
20 |
20 |
PHP_MAX_INPUT_TIME |
60 |
60 |
60 |
60 |
60 |
PHP_MAX_INPUT_VARS |
2000 |
2000 |
2000 |
2000 |
2000 |
PHP_MEMORY_LIMIT |
512M |
512M |
512M |
512M |
512M |
PHP_MYSQLI_CACHE_SIZE |
2000 |
2000 |
2000 |
2000 |
2000 |
PHP_NEWRELIC_LICENSE |
|||||
| see all newrelic ext options | 8.x newrelic | 8.x newrelic | 8.x newrelic | 8.x newrelic | 8.x newrelic |
PHP_OPCACHE_ENABLE |
1 |
1 |
1 |
1 |
1 |
PHP_OPCACHE_ENABLE_CLI |
0 |
0 |
0 |
0 |
0 |
PHP_OPCACHE_VALIDATE_TIMESTAMPS |
1 |
1 |
1 |
1 |
1 |
PHP_OPCACHE_REVALIDATE_FREQ |
2 |
2 |
2 |
2 |
2 |
PHP_OPCACHE_MAX_ACCELERATED_FILES |
4000 |
4000 |
4000 |
4000 |
4000 |
PHP_OPCACHE_MEMORY_CONSUMPTION |
128 |
128 |
128 |
128 |
128 |
PHP_OPCACHE_INTERNED_STRINGS_BUFFER |
8 |
8 |
8 |
8 |
8 |
PHP_OPCACHE_FAST_SHUTDOWN |
- | - | - | - | - |
PHP_OPCACHE_HUGE_CODE_PAGES |
0 |
0 |
0 |
0 |
0 |
PHP_OPCACHE_PRELOAD |
- | - | - | - | - |
PHP_OPCACHE_PRELOAD_USER |
www-data |
www-data |
www-data |
www-data |
www-data |
PHP_OPCACHE_JIT |
tracing |
tracing |
tracing |
tracing |
tracing |
PHP_OPCACHE_JIT_BUFFER_SIZE |
0 |
0 |
0 |
0 |
0 |
PHP_OUTPUT_BUFFERING |
4096 |
4096 |
4096 |
4096 |
4096 |
PHP_PCOV_ENABLED |
0 |
0 |
0 |
0 |
0 |
| see all pcov ext options | 8.x pcov | 8.x pcov | 8.x pcov | 8.x pcov | 8.x pcov |
PHP_PDO_MYSQL_CACHE_SIZE |
- | - | - | - | - |
PHP_PHAR_READONLY |
1 |
1 |
1 |
1 |
1 |
PHP_PHAR_REQUIRE_HASH |
1 |
1 |
1 |
1 |
1 |
PHP_PHAR_CACHE_LIST |
|||||
PHP_POST_MAX_SIZE |
32M |
32M |
32M |
32M |
32M |
PHP_REALPATH_CACHE_SIZE |
4096k |
4096k |
4096k |
4096k |
4096k |
PHP_REALPATH_CACHE_TTL |
120 |
120 |
120 |
120 |
120 |
PHP_SENDMAIL_PATH |
/usr/bin/msmtp -t -i |
/usr/bin/msmtp -t -i |
/usr/bin/msmtp -t -i |
/usr/bin/msmtp -t -i |
/usr/bin/dos2unix -u | /usr/bin/msmtp -t -i |
PHP_MAIL_MIXED_LF_AND_CRLF |
Off |
Off |
Off |
Off |
- |
PHP_SESSION_SAVE_HANDLER |
files |
files |
files |
files |
files |
PHP_SHORT_OPEN_TAG |
1 |
1 |
1 |
1 |
1 |
PHP_SPX_DATA_DIR |
/mnt/files/spx |
/mnt/files/spx |
/mnt/files/spx |
/mnt/files/spx |
/mnt/files/spx |
PHP_SPX_HTTP_ENABLED |
0 |
0 |
0 |
0 |
0 |
PHP_SPX_HTTP_KEY |
|||||
PHP_SPX_HTTP_IP_WHITELIST |
|||||
| see all sqlsrv ext options | 8.x sqlsrv | 8.x sqlsrv | 8.x sqlsrv | 8.x sqlsrv | 8.x sqlsrv |
| see all session options | 8.3 session | 8.3 session | 8.3 session | 8.2 session | 8.1 session |
| see all xhprof options | 8.x xhprof | 8.x xhprof | 8.x xhprof | 8.x xhprof | 8.x xhprof |
PHP_UPLOAD_MAX_FILESIZE |
32M |
32M |
32M |
32M |
32M |
PHP_XDEBUG_MODE |
off |
off |
off |
off |
off |
| see all xdebug ext options | 8.x xdebug | 8.x xdebug | 8.x xdebug | 8.x xdebug | 8.x xdebug |
PHP_ZEND_ASSERTIONS |
1 |
1 |
1 |
1 |
1 |
PHP_ZEND_EXCEPTION_IGNORE_ARGS |
0 |
0 |
0 |
0 |
0 |
PHP_ZEND_MULTIBYTE |
0 |
0 |
0 |
0 |
0 |
PHP_ZEND_SIGNAL_CHECK |
0 |
0 |
0 |
0 |
0 |
PHP_ZEND_EXCEPTION_STRING_PARAM_MAX_LEN |
15 |
15 |
15 |
15 |
15 |
PHP_ZEND_SCRIPT_ENCODING |
|||||
PHP_ZEND_DETECT_UNICODE |
"-" - Not available for this version
| Variable | Default value |
|---|---|
GIT_USER_EMAIL |
[email protected] |
GIT_USER_NAME |
wodby |
HTTP_PROXY |
|
SSH_PRIVATE_KEY |
|
SSH_DISABLE_STRICT_KEY_CHECKING |
|
SSHD_GATEWAY_PORTS |
no |
SSHD_HOST_KEYS_DIR |
/etc/ssh |
SSHD_LOG_LEVEL |
INFO |
SSHD_PASSWORD_AUTHENTICATION |
no |
SSHD_PERMIT_USER_ENV |
yes |
SSHD_USE_DNS |
yes |
MSMTP_PORT |
25 |
MSMTP_TLS |
off |
MSMTP_LOG |
|
MSMTP_LOGFILE |
/proc/self/fd/2 |
MSMTP_AUTH |
off |
MSMTP_HOST |
opensmtpd |
MSMTP_ADD_MISSING_DATE_HEADER |
on |
MARIADB_CLIENT_SSL_VERIFY_SERVER_CERT |
` |
| Argument | Default value |
|---|---|
PHP_VER |
|
PHP_DEV |
|
WODBY_GROUP_ID |
1000 |
WODBY_USER_ID |
1000 |
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.
Extensions xdebug, xhprof and spx disabled by default, to change it override the default env
var PHP_EXTENSIONS_DISABLE=xdebug,xhprof,spx.
| Extension | 8.5 | 8.4 | 8.3 | 8.2 | 8.1 |
|---|---|---|---|---|---|
| amqp | – | 2.1.2 | 2.1.2 | 2.1.2 | 2.1.2 |
| apcu | 5.1.27 | 5.1.27 | 5.1.27 | 5.1.27 | 5.1.27 |
| ast | 1.1.3 | 1.1.3 | 1.1.3 | 1.1.3 | 1.1.3 |
| bcmath | |||||
| brotli | 0.18.2 | 0.18.2 | 0.18.2 | 0.18.2 | 0.18.2 |
| bz2 | |||||
| calendar | |||||
| Core | |||||
| ctype | |||||
| curl | |||||
| date | |||||
| dom | |||||
| ds | 1.5.0 | 1.5.0 | 1.5.0 | 1.5.0 | 1.5.0 |
| exif | |||||
| event | 3.1.4 | 3.1.4 | 3.1.4 | 3.1.4 | 3.1.4 |
| fileinfo | |||||
| filter | |||||
| ftp | |||||
| gd | |||||
| grpc | – | 1.76.0 | 1.76.0 | 1.76.0 | 1.76.0 |
| hash | |||||
| iconv | |||||
| igbinary | – | 3.2.16 | 3.2.16 | 3.2.16 | 3.2.16 |
| imagick | – | 3.8.0 | 3.8.0 | 3.8.0 | 3.8.0 |
| imap | 1.0.3 | 1.0.3 | - | - | - |
| imap | - | - | |||
| intl | |||||
| json | |||||
| ldap | |||||
| libxml | |||||
| mbstring | |||||
| memcached | 3.4.0 | 3.4.0 | 3.4.0 | 3.4.0 | 3.4.0 |
| mongodb | 2.1.4 | 2.1.4 | 2.1.4 | 2.1.4 | 2.1.4 |
| mysqli | |||||
| mysqlnd | |||||
| newrelic | – | latest | latest | latest | latest |
| OAuth | 2.0.10 | 2.0.10 | 2.0.10 | 2.0.10 | 2.0.10 |
| openssl | |||||
| opentelemetry | 1.2.1 | 1.2.1 | 1.2.1 | 1.2.1 | 1.2.1 |
| pcov | 1.0.12 | 1.0.12 | 1.0.12 | 1.0.12 | 1.0.12 |
| pcntl | |||||
| pcre | |||||
| PDO | |||||
| pdo_mysql | |||||
| pdo_pgsql | |||||
| pdo_sqlite | |||||
| pdo_sqlsrv* | - | - | 5.12.0 | 5.12.0 | 5.12.0 |
| pgsql | |||||
| Phar | |||||
| posix | |||||
| protobuf | 4.30.2 | 4.30.2 | 4.30.2 | 4.30.2 | 4.30.2 |
| rdkafka | 6.0.5 | 6.0.5 | 6.0.5 | 6.0.5 | 6.0.5 |
| readline | |||||
| redis | 6.3.0 | 6.3.0 | 6.3.0 | 6.3.0 | 6.3.0 |
| Reflection | |||||
| session | |||||
| SimpleXML | |||||
| smbclient | 1.1.1 | 1.1.1 | 1.1.1 | 1.1.1 | 1.1.1 |
| soap | |||||
| sockets | |||||
| sodium | |||||
| SPL | |||||
| spx | 0.4.22 | 0.4.22 | 0.4.22 | 0.4.22 | 0.4.22 |
| sqlite3 | |||||
| sqlsrv* | 5.12.0 | 5.12.0 | 5.12.0 | 5.12.0 | 5.12.0 |
| standard | |||||
| tidy | |||||
| tokenizer | |||||
| uploadprogress | 2.0.2 | 2.0.2 | 2.0.2 | 2.0.2 | 2.0.2 |
| uuid | 1.3.0 | 1.3.0 | 1.3.0 | 1.3.0 | 1.3.0 |
| xdebug | – | 3.4.7 | 3.4.7 | 3.4.7 | 3.4.7 |
| xhprof | 2.3.10 | 2.3.10 | 2.3.10 | 2.3.10 | 2.3.10 |
| xml | |||||
| xmlreader | |||||
| xmlwriter | |||||
| xsl | |||||
| yaml | 2.2.5 | 2.2.5 | 2.2.5 | 2.2.5 | 2.2.5 |
| Zend OPcache | |||||
| zip | |||||
| zlib |
Legend:
- [EMPTY] – Core PHP extension
- "-" - Not exists in this version > Some extensions may not be available in
-devimages
- sqlsrv extension has no arm64 support because the driver has no support for linux/arm64
| Tool | all PHP versions |
|---|---|
| Composer | latest |
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.
Changes per stability tag reflected in git tags description under releases.
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
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
You can add a private SSH key to the container by mounting it to /home/wodby/.ssh/id_rsa
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 #22 for more details.
-
files_chmod– in case you need write access forwodbyuser to a file/dir generated bywww-dataon this volume runsudo files_chmod [FILEPATH]script (FILEPATH must be under/mnt/files), it will recursively change the mode toug=rwX,o=rX -
files_chown– in case you manually uploaded files underwodbyuser to files volume and want to change the ownership of those files towww-datarunsudo files_chown [FILEPATH]script (FILEPATH must be under/mnt/files), it will recursively change ownership towww-data:www-data
- wodby/drupal-php
- wodby/wordpress-php
- wodby/adminer
- wodby/matomo
- wodby/cachet
- wodby/webgrind
- wodby/xhprof
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