Skip to content

Commit 2dd3084

Browse files
committed
Optimized production containers
Signed-off-by: Moritz Mazetti <moritz@matchory.com>
1 parent 10f782d commit 2dd3084

3 files changed

Lines changed: 112 additions & 49 deletions

File tree

Dockerfile

Lines changed: 41 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -134,30 +134,6 @@ ARG user="php"
134134
ARG uid="900"
135135

136136
RUN <<EOF
137-
# region Remove Build Dependencies
138-
export DEBIAN_FRONTEND=noninteractive
139-
apt-get purge \
140-
--option APT::AutoRemove::RecommendsImportant=false \
141-
--auto-remove \
142-
--yes \
143-
;
144-
145-
rm -rf \
146-
/usr/local/lib/php/test \
147-
/usr/local/bin/phpdbg \
148-
/usr/local/bin/install-php-extensions \
149-
/usr/local/bin/docker-php-source \
150-
/usr/local/bin/docker-php-ext-* \
151-
/usr/local/bin/phpize \
152-
/usr/local/bin/pear* \
153-
/usr/local/bin/pecl \
154-
/usr/local/bin/phpize \
155-
/var/cache/* \
156-
/usr/src/* \
157-
/tmp/* \
158-
;
159-
# endregion
160-
161137
# region Add a non-root user to run the application
162138
addgroup \
163139
--gid "${uid}" \
@@ -230,14 +206,54 @@ ONBUILD ARG user="php"
230206
ONBUILD ARG uid="900"
231207
USER "${uid}:${uid}"
232208

233-
FROM base AS prod
209+
FROM base AS prod-pre
210+
RUN <<EOF
211+
# region Remove Build Dependencies
212+
export DEBIAN_FRONTEND=noninteractive
213+
apt-get remove \
214+
--yes \
215+
--purge \
216+
${PHPIZE_DEPS} \
217+
;
218+
apt-get purge \
219+
--option APT::AutoRemove::RecommendsImportant=false \
220+
--auto-remove \
221+
--yes \
222+
;
223+
apt-get autoremove --yes
224+
225+
rm -rf \
226+
/usr/local/bin/phpdbg \
227+
/usr/local/bin/php-cgi \
228+
/usr/local/bin/php-config \
229+
/usr/local/bin/install-php-extensions \
230+
/usr/local/bin/docker-php-source \
231+
/usr/local/bin/docker-php-ext-* \
232+
/usr/local/bin/phpize \
233+
/usr/local/bin/pear* \
234+
/usr/local/bin/phar* \
235+
/usr/local/bin/pecl \
236+
/usr/local/php/man \
237+
/usr/local/etc/pear.conf \
238+
/usr/local/lib/php/PEAR \
239+
/usr/local/lib/php/.registry \
240+
/usr/src/* \
241+
/var/cache/* \
242+
/var/log/* \
243+
/tmp/* \
244+
;
245+
# endregion
246+
EOF
247+
248+
FROM scratch AS prod
234249
ARG user="php"
235250
ARG uid="900"
236251
ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS="0"
237252
ENV PHP_OPCACHE_MAX_ACCELERATED_FILES="10000"
238253
ENV PHP_OPCACHE_MEMORY_CONSUMPTION="192"
239254
ENV PHP_OPCACHE_MAX_WASTED_PERCENTAGE="10"
240255

256+
COPY --link --from=prod-pre / /
241257
RUN ln -sf "${PHP_INI_DIR}/php.ini-production" "${PHP_INI_DIR}/php.ini"
242258

243259
WORKDIR "/app"

alpine.Dockerfile

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,14 +234,43 @@ ONBUILD ARG user="php"
234234
ONBUILD ARG uid="900"
235235
USER "${uid}:${uid}"
236236

237-
FROM base AS prod
237+
FROM base AS prod-pre
238+
RUN <<EOF
239+
# region Remove Build Dependencies
240+
set -eux
241+
apk del ${PHPIZE_DEPS} *-dev
242+
rm -rf \
243+
/usr/local/bin/phpdbg \
244+
/usr/local/bin/php-cgi \
245+
/usr/local/bin/php-config \
246+
/usr/local/bin/install-php-extensions \
247+
/usr/local/bin/docker-php-source \
248+
/usr/local/bin/docker-php-ext-* \
249+
/usr/local/bin/phpize \
250+
/usr/local/bin/pear* \
251+
/usr/local/bin/phar* \
252+
/usr/local/bin/pecl \
253+
/usr/local/php/man \
254+
/usr/local/etc/pear.conf \
255+
/usr/local/lib/php/PEAR \
256+
/usr/local/lib/php/.registry \
257+
/usr/src/* \
258+
/var/cache/* \
259+
/var/log/* \
260+
/tmp/* \
261+
;
262+
# endregion
263+
EOF
264+
265+
FROM scratch AS prod
238266
ARG user="php"
239267
ARG uid="900"
240268
ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS="0"
241269
ENV PHP_OPCACHE_MAX_ACCELERATED_FILES="10000"
242270
ENV PHP_OPCACHE_MEMORY_CONSUMPTION="192"
243271
ENV PHP_OPCACHE_MAX_WASTED_PERCENTAGE="10"
244272

273+
COPY --link --from=prod-pre / /
245274
RUN ln -sf "${PHP_INI_DIR}/php.ini-production" "${PHP_INI_DIR}/php.ini"
246275

247276
WORKDIR "/app"

frankenphp.Dockerfile

Lines changed: 41 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -115,28 +115,6 @@ ARG user="php"
115115
ARG uid="900"
116116

117117
RUN <<EOF
118-
# region Remove Build Dependencies
119-
export DEBIAN_FRONTEND=noninteractive
120-
apt-get purge \
121-
--option APT::AutoRemove::RecommendsImportant=false \
122-
--auto-remove \
123-
--yes \
124-
;
125-
126-
rm -rf \
127-
/usr/local/lib/php/test \
128-
/usr/local/bin/phpdbg \
129-
/usr/local/bin/install-php-extensions \
130-
/usr/local/bin/docker-php-source \
131-
/usr/local/bin/docker-php-ext-* \
132-
/usr/local/bin/phpize \
133-
/usr/local/bin/pear* \
134-
/usr/local/bin/pecl \
135-
/usr/src/* \
136-
/tmp/* \
137-
;
138-
# endregion
139-
140118
# region Add a non-root user to run the application
141119
addgroup \
142120
--gid "${uid}" \
@@ -226,14 +204,54 @@ ONBUILD ARG user="php"
226204
ONBUILD ARG uid="900"
227205
USER "${uid}:${uid}"
228206

229-
FROM base AS prod
207+
FROM base AS prod-pre
208+
RUN <<EOF
209+
# region Remove Build Dependencies
210+
export DEBIAN_FRONTEND=noninteractive
211+
apt-get remove \
212+
--yes \
213+
--purge \
214+
${PHPIZE_DEPS} \
215+
;
216+
apt-get purge \
217+
--option APT::AutoRemove::RecommendsImportant=false \
218+
--auto-remove \
219+
--yes \
220+
;
221+
apt-get autoremove --yes
222+
223+
rm -rf \
224+
/usr/local/bin/phpdbg \
225+
/usr/local/bin/php-cgi \
226+
/usr/local/bin/php-config \
227+
/usr/local/bin/install-php-extensions \
228+
/usr/local/bin/docker-php-source \
229+
/usr/local/bin/docker-php-ext-* \
230+
/usr/local/bin/phpize \
231+
/usr/local/bin/pear* \
232+
/usr/local/bin/phar* \
233+
/usr/local/bin/pecl \
234+
/usr/local/php/man \
235+
/usr/local/etc/pear.conf \
236+
/usr/local/lib/php/PEAR \
237+
/usr/local/lib/php/.registry \
238+
/usr/src/* \
239+
/var/cache/* \
240+
/var/log/* \
241+
/tmp/* \
242+
;
243+
# endregion
244+
EOF
245+
246+
FROM scratch AS prod
230247
ARG user="php"
231248
ARG uid="900"
232249
ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS="0"
233250
ENV PHP_OPCACHE_MAX_ACCELERATED_FILES="10000"
234251
ENV PHP_OPCACHE_MEMORY_CONSUMPTION="192"
235252
ENV PHP_OPCACHE_MAX_WASTED_PERCENTAGE="10"
236253

254+
COPY --link --from=prod-pre / /
237255
RUN ln -sf "${PHP_INI_DIR}/php.ini-production" "${PHP_INI_DIR}/php.ini"
238256

239257
WORKDIR "/app"

0 commit comments

Comments
 (0)