MOVED: please use behance/docker-php
100K+
Provides a pre-wired, configurable PHP + Nginx setup across multiple runtime versions.
Integrated with Behance’s docker-nginx
Available on Docker Hub.
docker run bryanlatten/docker-php:7.0 "php" "-v"docker run bryanlatten/docker-php:7.1 "php" "-v"docker run bryanlatten/docker-php:7.1-alpine "php" "-v"docker run bryanlatten/docker-php:7.2-beta "php" "-v"Adding code to runtime, see here.
PHP tuning and configuration, see here.
Nginx tuning and configuration, see here.
Adding startup logic, basic or advanced.
PHP_MAJOR.PHP_MINOR(-Major.Minor.Patch)(-variant)PHP_MAJOR.PHP_MINOR, required. Engine versions of PHP. ex. docker-php:7.1(Major.Minor.Patch), optional. Semantically versioned container provisioning code. ex. docker-php:7.1-12.4.0.(-variant), optional. Alpine variants are slim versions of the container. ex. docker-php:7.1-alpine.goss -g /tests/php-fpm/{PHP_MAJOR.PHP_MINOR}(-variant).goss.yaml to validate any configuration updates* - not available on -alpine variant
^ - not available on 7.2
~ - disabled by default (default: use phpenmod to enable, Alpine-only: uncomment .ini file)
Sample Dockerfile
FROM bryanlatten/docker-php:7.1
# (optional, recommended) Verify everything is in order from the parent
RUN goss -g /tests/php-fpm/7.1.goss.yaml validate && /aufs_hack.sh
# Layer local code into runtime
COPY ./ /app/
# Done!
Local code should be copied into /app, for example:
COPY ./ /app/
Nginx is pre-configured to use a front controller PHP file (entrypoint)
a front controller called index.php within a public folder. /app/public/index.php
Dev Mode (no ENV variables): PHP's opcache is enabled, and is set to check files for updates. Code can be developed locally in Docker by mounting into the /app folder.
For example, the docker-compose.yml syntax:
volumes:
- ./:/app
CFG_APP_DEBUG=0. Container becomes immutable, PHP's opcache is configured to not check files for updates.8080.REPLACE_NEWRELIC_APP and REPLACE_NEWRELIC_LICENSE/__status. Application healthcheck can pull PHP-FPM statistics from http://127.0.0.1/__status?json. To open to more clients than local, add more allow statements in __status location block in $CONF_NGINX_SITE(/etc/nginx/sites-available/default)/__nginx_status. Application healthcheck can pull nginx statistics from http://127.0.0.1/__nginx_status. To open to more clients than local, add more allow statements in __nginx_status location block in $CONF_NGINX_SITE (/etc/nginx/sites-available/default)Several environment variables can be used to configure various PHP FPM paramaters, as well as a few Nginx configurations.
as such. These can be used to drive the configuration of the downstream PHP application in any way necessary, but there are a few environment variables that bryanlatter/docker-php will process along the way...
See parent(s) docker-nginx, docker-base for additional configuration
| Variable | Example | Default | Description |
|---|---|---|---|
* | DATABASE_HOST=master.rds.aws.com | - | PHP has access to environment variables by default |
CFG_APP_DEBUG | CFG_APP_DEBUG=1 | 1 | Setting to 1 or true will cue the Opcache to watch for file changes. Set to 0 for production mode, which provides a sizeable performance boost, though manually updating a file will not be seen unless the opcache is reset. |
CFG_XDEBUG_ENABLE | CFG_XDEBUG_ENABLE=1 | - | Setting to 1 or true will enable the XDebug extension, which is preconfigured to allow remote debugging as well as profiling. NOTE: Requires "dev" mode be enabled via CFG_APP_DEBUG. |
SERVER_MAX_BODY_SIZE | SERVER_MAX_BODY_SIZE=4M | 1M | Allows the downstream application to specify a non-default client_max_body_size configuration for the server-level directive in /etc/nginx/sites-available/default |
SERVER_FASTCGI_BUFFERS | SERVER_FASTCGI_BUFFERS=‘512 32k’ | 256 16k | docs, tweaking |
SERVER_FASTCGI_BUFFER_SIZE | SERVER_FASTCGI_BUFFER_SIZE=‘256k’ | 128k | docs, tweaking |
SERVER_FASTCGI_BUSY_BUFFERS_SIZE | SERVER_FASTCGI_BUSY_BUFFERS_SIZE=‘1024k’ | 256k | docs |
REPLACE_NEWRELIC_APP | REPLACE_NEWRELIC_APP=prod-server-abc | - | Sets application name for newrelic |
REPLACE_NEWRELIC_LICENSE | REPLACE_NEWRELIC_LICENSE=abcdefg | - | Sets license for newrelic, when combined with above, will enable newrelic reporting |
PHP_FPM_MEMORY_LIMIT | PHP_FPM_MEMORY_LIMIT=256M | 192MB | Sets memory limit for FPM instances of PHP |
PHP_FPM_MAX_EXECUTION_TIME | PHP_FPM_MAX_EXECUTION_TIME=30 | 60 | Sets time limit for FPM workers |
PHP_FPM_UPLOAD_MAX_FILESIZE | PHP_FPM_UPLOAD_MAX_FILESIZE=100M | 1M | Sets both upload_max_filesize and post_max_size |
PHP_FPM_MAX_CHILDREN | PHP_FPM_MAX_CHILDREN=15 | 4096 | docs |
PHP_FPM_START_SERVERS | PHP_FPM_START_SERVERS=40 | 20 | docs |
PHP_FPM_MAX_REQUESTS | PHP_FPM_MAX_REQUESTS=100 | 1024 | docs How many requests an individual FPM worker will process before recycling |
PHP_FPM_MIN_SPARE_SERVERS | PHP_FPM_MIN_SPARE_SERVERS=10 | 5 | docs |
PHP_OPCACHE_MEMORY_CONSUMPTION | PHP_OPCACHE_MEMORY_CONSUMPTION=512 | 128 | docs |
PHP_OPCACHE_MAX_WASTED_PERCENTAGE | PHP_OPCACHE_MAX_WASTED_PERCENTAGE=10 | 5 | docs |
PHP_OPCACHE_INTERNED_STRINGS_BUFFER | PHP_OPCACHE_INTERNED_STRINGS_BUFFER=64 | 16 | docs |
docker and docker-composebash -e ./test.sh {docker-machine} where docker-machine is the IP of the connected docker engine.
These same tests get run automatically, per pull request, via Travis CIContent type
Image
Digest
sha256:78bf357e0…
Size
122.1 MB
Last updated
almost 9 years ago
docker pull bryanlatten/docker-php