Skip to content

Commit e07a9aa

Browse files
authored
Merge pull request #90 from bryanlatten/pm-envs
Dockerfile: switched to ENV variables for performance management
2 parents 32d8fce + 21714e7 commit e07a9aa

File tree

4 files changed

+38
-19
lines changed

4 files changed

+38
-19
lines changed

Dockerfile

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,12 @@ ENV CONF_PHPFPM=/etc/php/7.0/fpm/php-fpm.conf \
66
CONF_PHPMODS=/etc/php/7.0/mods-available \
77
CONF_FPMPOOL=/etc/php/7.0/fpm/pool.d/www.conf \
88
CONF_FPMOVERRIDES=/etc/php/7.0/fpm/conf.d/overrides.user.ini \
9-
APP_ROOT=/app
9+
APP_ROOT=/app \
10+
PHP_FPM_MAX_CHILDREN=4096 \
11+
PHP_FPM_START_SERVERS=20 \
12+
PHP_FPM_MAX_REQUESTS=1024 \
13+
PHP_FPM_MIN_SPARE_SERVERS=5 \
14+
PHP_FPM_MAX_SPARE_SERVERS=128
1015

1116
# Ensure the latest base packages are up to date (don't require a parent rebuild)
1217
RUN apt-get update -q && \
@@ -84,11 +89,11 @@ RUN apt-get update -q && \
8489

8590
RUN sed -i "s/listen = .*/listen = 127.0.0.1:9000/" $CONF_FPMPOOL && \
8691
sed -i "s/;chdir = .*/chdir = \/app/" $CONF_FPMPOOL && \
87-
sed -i "s/pm.max_children = .*/pm.max_children = 4096/" $CONF_FPMPOOL && \
88-
sed -i "s/pm.start_servers = .*/pm.start_servers = 20/" $CONF_FPMPOOL && \
89-
sed -i "s/;pm.max_requests = .*/pm.max_requests = 1024/" $CONF_FPMPOOL && \
90-
sed -i "s/pm.min_spare_servers = .*/pm.min_spare_servers = 5/" $CONF_FPMPOOL && \
91-
sed -i "s/pm.max_spare_servers = .*/pm.max_spare_servers = 128/" $CONF_FPMPOOL && \
92+
sed -i "s/pm.max_children = .*/pm.max_children = \${PHP_FPM_MAX_CHILDREN}/" $CONF_FPMPOOL && \
93+
sed -i "s/pm.start_servers = .*/pm.start_servers = \${PHP_FPM_START_SERVERS}/" $CONF_FPMPOOL && \
94+
sed -i "s/;pm.max_requests = .*/pm.max_requests = \${PHP_FPM_MAX_REQUESTS}/" $CONF_FPMPOOL && \
95+
sed -i "s/pm.min_spare_servers = .*/pm.min_spare_servers = \${PHP_FPM_MIN_SPARE_SERVERS}/" $CONF_FPMPOOL && \
96+
sed -i "s/pm.max_spare_servers = .*/pm.max_spare_servers = \${PHP_FPM_MAX_SPARE_SERVERS}/" $CONF_FPMPOOL && \
9297
sed -i "s/;clear_env/clear_env/" $CONF_FPMPOOL && \
9398
sed -i "s/;catch_workers_output/catch_workers_output/" $CONF_FPMPOOL && \
9499
sed -i "s/error_log = .*/error_log = \/dev\/stdout/" $CONF_PHPFPM && \

Dockerfile-alpine

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ ENV CONF_PHPFPM=/etc/php7/php-fpm.conf \
77
CONF_FPMPOOL=/etc/php7/php-fpm.d/www.conf \
88
CONF_FPMOVERRIDES=/etc/php/7.0/fpm/conf.d/overrides.user.ini \
99
APP_ROOT=/app \
10+
PHP_FPM_MAX_CHILDREN=4096 \
11+
PHP_FPM_START_SERVERS=20 \
12+
PHP_FPM_MAX_REQUESTS=1024 \
13+
PHP_FPM_MIN_SPARE_SERVERS=5 \
14+
PHP_FPM_MAX_SPARE_SERVERS=128 \
1015
NEWRELIC_VERSION=6.4.0.163
1116

1217
RUN echo '@edge http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories && \
@@ -112,11 +117,11 @@ RUN curl -sS https://getcomposer.org/installer | php && \
112117

113118
RUN sed -i "s/listen = .*/listen = 127.0.0.1:9000/" $CONF_FPMPOOL && \
114119
sed -i "s/;chdir = .*/chdir = \/app/" $CONF_FPMPOOL && \
115-
sed -i "s/pm.max_children = .*/pm.max_children = 4096/" $CONF_FPMPOOL && \
116-
sed -i "s/pm.start_servers = .*/pm.start_servers = 20/" $CONF_FPMPOOL && \
117-
sed -i "s/;pm.max_requests = .*/pm.max_requests = 1024/" $CONF_FPMPOOL && \
118-
sed -i "s/pm.min_spare_servers = .*/pm.min_spare_servers = 5/" $CONF_FPMPOOL && \
119-
sed -i "s/pm.max_spare_servers = .*/pm.max_spare_servers = 128/" $CONF_FPMPOOL && \
120+
sed -i "s/pm.max_children = .*/pm.max_children = \${PHP_FPM_MAX_CHILDREN}/" $CONF_FPMPOOL && \
121+
sed -i "s/pm.start_servers = .*/pm.start_servers = \${PHP_FPM_START_SERVERS}/" $CONF_FPMPOOL && \
122+
sed -i "s/;pm.max_requests = .*/pm.max_requests = \${PHP_FPM_MAX_REQUESTS}/" $CONF_FPMPOOL && \
123+
sed -i "s/pm.min_spare_servers = .*/pm.min_spare_servers = \${PHP_FPM_MIN_SPARE_SERVERS}/" $CONF_FPMPOOL && \
124+
sed -i "s/pm.max_spare_servers = .*/pm.max_spare_servers = \${PHP_FPM_MAX_SPARE_SERVERS}/" $CONF_FPMPOOL && \
120125
sed -i "s/;clear_env/clear_env/" $CONF_FPMPOOL && \
121126
sed -i "s/;catch_workers_output/catch_workers_output/" $CONF_FPMPOOL && \
122127
sed -i "s/;\?error_log = .*/error_log = \/dev\/stdout/" $CONF_PHPFPM && \

Dockerfile-edge

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,12 @@ ENV CONF_PHPFPM=/etc/php/7.1/fpm/php-fpm.conf \
66
CONF_PHPMODS=/etc/php/7.1/mods-available \
77
CONF_FPMPOOL=/etc/php/7.1/fpm/pool.d/www.conf \
88
CONF_FPMOVERRIDES=/etc/php/7.1/fpm/conf.d/overrides.user.ini \
9-
APP_ROOT=/app
9+
APP_ROOT=/app \
10+
PHP_FPM_MAX_CHILDREN=4096 \
11+
PHP_FPM_START_SERVERS=20 \
12+
PHP_FPM_MAX_REQUESTS=1024 \
13+
PHP_FPM_MIN_SPARE_SERVERS=5 \
14+
PHP_FPM_MAX_SPARE_SERVERS=128
1015

1116
# Ensure the latest base packages are up to date (don't require a parent rebuild)
1217
RUN apt-get update -q && \
@@ -85,15 +90,13 @@ RUN apt-get remove --purge -yq \
8590
# - Enforce ACL that only 127.0.0.1 may connect
8691
# - Allow FPM to pick up extra configuration in fpm/conf.d folder
8792

88-
# TODO: allow ENV specification of performance management at runtime (in run.d startup script)
89-
9093
RUN sed -i "s/listen = .*/listen = 127.0.0.1:9000/" $CONF_FPMPOOL && \
9194
sed -i "s/;chdir = .*/chdir = \/app/" $CONF_FPMPOOL && \
92-
sed -i "s/pm.max_children = .*/pm.max_children = 4096/" $CONF_FPMPOOL && \
93-
sed -i "s/pm.start_servers = .*/pm.start_servers = 20/" $CONF_FPMPOOL && \
94-
sed -i "s/;pm.max_requests = .*/pm.max_requests = 1024/" $CONF_FPMPOOL && \
95-
sed -i "s/pm.min_spare_servers = .*/pm.min_spare_servers = 5/" $CONF_FPMPOOL && \
96-
sed -i "s/pm.max_spare_servers = .*/pm.max_spare_servers = 128/" $CONF_FPMPOOL && \
95+
sed -i "s/pm.max_children = .*/pm.max_children = \${PHP_FPM_MAX_CHILDREN}/" $CONF_FPMPOOL && \
96+
sed -i "s/pm.start_servers = .*/pm.start_servers = \${PHP_FPM_START_SERVERS}/" $CONF_FPMPOOL && \
97+
sed -i "s/;pm.max_requests = .*/pm.max_requests = \${PHP_FPM_MAX_REQUESTS}/" $CONF_FPMPOOL && \
98+
sed -i "s/pm.min_spare_servers = .*/pm.min_spare_servers = \${PHP_FPM_MIN_SPARE_SERVERS}/" $CONF_FPMPOOL && \
99+
sed -i "s/pm.max_spare_servers = .*/pm.max_spare_servers = \${PHP_FPM_MAX_SPARE_SERVERS}/" $CONF_FPMPOOL && \
97100
sed -i "s/;clear_env/clear_env/" $CONF_FPMPOOL && \
98101
sed -i "s/;catch_workers_output/catch_workers_output/" $CONF_FPMPOOL && \
99102
sed -i "s/error_log = .*/error_log = \/dev\/stdout/" $CONF_PHPFPM && \

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,10 @@ Variable | Example | Description
9292
`PHP_FPM_MEMORY_LIMIT` | `PHP_FPM_MEMORY_LIMIT=256M` | Sets memory limit for FPM instances of PHP
9393
`PHP_FPM_MAX_EXECUTION_TIME` | `PHP_FPM_MAX_EXECUTION_TIME=60` | Sets time limit for FPM workers
9494
`PHP_FPM_UPLOAD_MAX_FILESIZE` | `PHP_FPM_UPLOAD_MAX_FILESIZE=100M` | Sets both upload_max_filesize and post_max_size
95+
`PHP_FPM_MAX_CHILDREN` | `PHP_FPM_MAX_CHILDREN=15` | [docs](http://php.net/manual/en/install.fpm.configuration.php)
96+
`PHP_FPM_START_SERVERS` | `PHP_FPM_START_SERVERS=128` | [docs](http://php.net/manual/en/install.fpm.configuration.php)
97+
`PHP_FPM_MAX_REQUESTS` | `PHP_FPM_MAX_REQUESTS=1000` | [docs](http://php.net/manual/en/install.fpm.configuration.php) How many requests an individual FPM worker will process before recycling
98+
`PHP_FPM_MIN_SPARE_SERVERS` | `PHP_FPM_MIN_SPARE_SERVERS=5` | [docs](http://php.net/manual/en/install.fpm.configuration.php)
99+
`PHP_FPM_MAX_SPARE_SERVERS` | `PHP_FPM_MAX_SPARE_SERVERS=100` | [docs](http://php.net/manual/en/install.fpm.configuration.php)
100+
95101

0 commit comments

Comments
 (0)