Skip to content

Commit db403c1

Browse files
committed
Update Dockerfiles to change default user ID from 5000 to 900 and optimize CPU usage in installation commands
Signed-off-by: Moritz Mazetti <moritz@matchory.com>
1 parent 53dbb88 commit db403c1

File tree

3 files changed

+47
-50
lines changed

3 files changed

+47
-50
lines changed

Dockerfile

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
77
--mount=type=cache,target=/var/lib/apt,sharing=locked <<EOF
88
set -eux
99

10+
export DEBIAN_FRONTEND=noninteractive
1011
apt-get update
1112
apt-get install \
1213
--yes \
@@ -35,19 +36,16 @@ RUN --mount=type=bind,from=pie,source=/pie,target=/usr/bin/pie \
3536
set -eux
3637

3738
# region Install Dependencies
39+
export DEBIAN_FRONTEND=noninteractive
3840
apt-get update
3941
apt-get install \
4042
--yes \
4143
--no-install-recommends \
4244
${PHPIZE_DEPS} \
43-
linux-headers-generic \
44-
libcurl4-openssl-dev \
4545
libmemcached-dev \
4646
libsqlite3-dev \
4747
liburing-dev \
48-
libonig-dev \
4948
libyaml-dev \
50-
libssl-dev \
5149
libicu-dev \
5250
libzip-dev \
5351
zlib1g-dev \
@@ -58,27 +56,28 @@ RUN --mount=type=bind,from=pie,source=/pie,target=/usr/bin/pie \
5856
# endregion
5957

6058
docker-php-source extract
59+
export num_cpu=$(nproc)
6160

6261
# region Install PIE extensions
63-
pie install -j$(nproc) phpredis/phpredis \
62+
pie install -j${num_cpu} phpredis/phpredis \
6463
--enable-redis \
6564
;
66-
pie install -j$(nproc) apcu/apcu \
65+
pie install -j${num_cpu} apcu/apcu \
6766
--enable-apcu \
6867
;
69-
pie install -j$(nproc) pecl/yaml
70-
pie install -j$(nproc) php-memcached/php-memcached \
68+
pie install -j${num_cpu} pecl/yaml
69+
pie install -j${num_cpu} php-memcached/php-memcached \
7170
--enable-memcached-session \
7271
--enable-memcached-json \
7372
;
74-
#pie install -j$(nproc) csvtoolkit/fastcsv \
73+
#pie install -j${num_cpu} csvtoolkit/fastcsv \
7574
# --enable-fastcsv \
7675
#;
7776
# endregion
7877

7978
# region Install built-in extensions
8079
docker-php-ext-configure zip
81-
docker-php-ext-install -j$(nproc) \
80+
docker-php-ext-install -j${num_cpu} \
8281
pdo_sqlite \
8382
pdo_pgsql \
8483
sockets \
@@ -90,7 +89,7 @@ RUN --mount=type=bind,from=pie,source=/pie,target=/usr/bin/pie \
9089

9190
# If we're running on PHP 8.4, install the opcache extension (it's bundled in later versions)
9291
if php --version | grep -q "PHP 8\.4"; then
93-
docker-php-ext-install -j$(nproc) opcache
92+
docker-php-ext-install -j${num_cpu} opcache
9493
fi
9594
# endregion
9695

@@ -112,7 +111,7 @@ RUN --mount=type=bind,from=pie,source=/pie,target=/usr/bin/pie \
112111
# region Install Swoole with extra features
113112
# TODO: Remove this condition when Swoole supports PHP 8.5+
114113
if php --version | grep -q "PHP 8\.4"; then
115-
pie install -j$(nproc) swoole/swoole \
114+
pie install -j${num_cpu} swoole/swoole \
116115
--enable-swoole-sqlite \
117116
--enable-swoole-pgsql \
118117
--enable-swoole-curl \
@@ -127,10 +126,11 @@ EOF
127126

128127
FROM upstream AS base
129128
ARG user="php"
130-
ARG uid="5000"
129+
ARG uid="900"
131130

132131
RUN <<EOF
133132
# region Remove Build Dependencies
133+
export DEBIAN_FRONTEND=noninteractive
134134
apt-get purge \
135135
--option APT::AutoRemove::RecommendsImportant=false \
136136
--auto-remove \
@@ -182,7 +182,7 @@ EXPOSE 9000/tcp
182182

183183
FROM base AS dev
184184
ARG user="php"
185-
ARG uid="5000"
185+
ARG uid="900"
186186
ENV COMPOSER_ALLOW_SUPERUSER="1"
187187
ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS="1"
188188

@@ -222,12 +222,12 @@ COPY --link --from=composer:latest /usr/bin/composer /usr/bin/composer
222222
WORKDIR "/app"
223223

224224
ONBUILD ARG user="php"
225-
ONBUILD ARG uid="5000"
225+
ONBUILD ARG uid="900"
226226
USER "${uid}:${uid}"
227227

228228
FROM base AS prod
229229
ARG user="php"
230-
ARG uid="5000"
230+
ARG uid="900"
231231
ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS="0"
232232
ENV PHP_OPCACHE_MAX_ACCELERATED_FILES="10000"
233233
ENV PHP_OPCACHE_MEMORY_CONSUMPTION="192"
@@ -238,5 +238,5 @@ RUN ln -sf "${PHP_INI_DIR}/php.ini-production" "${PHP_INI_DIR}/php.ini"
238238
WORKDIR "/app"
239239

240240
ONBUILD ARG user="php"
241-
ONBUILD ARG uid="5000"
241+
ONBUILD ARG uid="900"
242242
USER "${uid}:${uid}"

alpine.Dockerfile

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ FROM php:${PHP_VERSION}-cli-alpine AS upstream
66
FROM upstream AS base
77
ARG UV_VERSION="0.3.0"
88
ARG user="php"
9-
ARG uid="5000"
9+
ARG uid="900"
1010

1111
# Install gnu-libiconv and set LD_PRELOAD env to make iconv work fully on Alpine image.
1212
# see https://github.com/docker-library/php/issues/240#issuecomment-763112749
@@ -38,43 +38,40 @@ RUN --mount=type=bind,from=pie,source=/pie,target=/usr/bin/pie \
3838
--virtual .build-deps \
3939
${PHPIZE_DEPS} \
4040
postgresql-dev \
41-
oniguruma-dev \
4241
linux-headers \
4342
liburing-dev \
44-
openssl-dev \
4543
sqlite-dev \
46-
c-ares-dev \
4744
pcre2-dev \
4845
libuv-dev \
4946
pcre-dev \
50-
curl-dev \
5147
icu-dev \
5248
git \
5349
;
5450
# endregion
5551

5652
docker-php-source extract
53+
export num_cpu=$(nproc)
5754

5855
# region Install PIE extensions
59-
pie install -j$(nproc) phpredis/phpredis \
56+
pie install -j${num_cpu} phpredis/phpredis \
6057
--enable-redis \
6158
;
62-
pie install -j$(nproc) apcu/apcu \
59+
pie install -j${num_cpu} apcu/apcu \
6360
--enable-apcu \
6461
;
65-
pie install -j$(nproc) pecl/yaml
66-
pie install -j$(nproc) php-memcached/php-memcached \
62+
pie install -j${num_cpu} pecl/yaml
63+
pie install -j${num_cpu} php-memcached/php-memcached \
6764
--enable-memcached-session \
6865
--enable-memcached-json \
6966
;
70-
#pie install -j$(nproc) csvtoolkit/fastcsv \
67+
#pie install -j${num_cpu} csvtoolkit/fastcsv \
7168
# --enable-fastcsv \
7269
#;
7370
# endregion
7471

7572
# region Install built-in extensions
7673
docker-php-ext-configure zip
77-
docker-php-ext-install -j$(nproc) \
74+
docker-php-ext-install -j${num_cpu} \
7875
pdo_sqlite \
7976
pdo_pgsql \
8077
sockets \
@@ -86,7 +83,7 @@ RUN --mount=type=bind,from=pie,source=/pie,target=/usr/bin/pie \
8683

8784
# If we're running on PHP 8.4, install the opcache extension (it's bundled in later versions)
8885
if php --version | grep -q "PHP 8\.4"; then
89-
docker-php-ext-install -j$(nproc) opcache
86+
docker-php-ext-install -j${num_cpu} opcache
9087
fi
9188
# endregion
9289

@@ -108,7 +105,7 @@ RUN --mount=type=bind,from=pie,source=/pie,target=/usr/bin/pie \
108105
# region Install Swoole with extra features
109106
# TODO: Remove this condition when Swoole supports PHP 8.5+
110107
if php --version | grep -q "PHP 8\.4"; then
111-
pie install -j$(nproc) swoole/swoole \
108+
pie install -j${num_cpu} swoole/swoole \
112109
--enable-swoole-sqlite \
113110
--enable-swoole-pgsql \
114111
--enable-swoole-curl \
@@ -181,7 +178,7 @@ EXPOSE 9000/tcp
181178

182179
FROM base AS dev
183180
ARG user="php"
184-
ARG uid="5000"
181+
ARG uid="900"
185182
ENV COMPOSER_ALLOW_SUPERUSER="1"
186183
ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS="1"
187184

@@ -229,12 +226,12 @@ COPY --link --from=composer:latest /usr/bin/composer /usr/bin/composer
229226
WORKDIR "/app"
230227

231228
ONBUILD ARG user="php"
232-
ONBUILD ARG uid="5000"
229+
ONBUILD ARG uid="900"
233230
USER "${uid}:${uid}"
234231

235232
FROM base AS prod
236233
ARG user="php"
237-
ARG uid="5000"
234+
ARG uid="900"
238235
ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS="0"
239236
ENV PHP_OPCACHE_MAX_ACCELERATED_FILES="10000"
240237
ENV PHP_OPCACHE_MEMORY_CONSUMPTION="192"
@@ -245,5 +242,5 @@ RUN ln -sf "${PHP_INI_DIR}/php.ini-production" "${PHP_INI_DIR}/php.ini"
245242
WORKDIR "/app"
246243

247244
ONBUILD ARG user="php"
248-
ONBUILD ARG uid="5000"
245+
ONBUILD ARG uid="900"
249246
USER "${uid}:${uid}"

frankenphp.Dockerfile

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
77
--mount=type=cache,target=/var/lib/apt,sharing=locked <<EOF
88
set -eux
99

10+
export DEBIAN_FRONTEND=noninteractive
1011
apt-get update
1112
apt-get install \
1213
--yes \
@@ -36,18 +37,15 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
3637
set -eux
3738

3839
# region Install Dependencies
40+
export DEBIAN_FRONTEND=noninteractive
3941
apt-get update
4042
apt-get install \
4143
--yes \
4244
--no-install-recommends \
4345
${PHPIZE_DEPS} \
44-
linux-headers-generic \
45-
libcurl4-openssl-dev \
4646
libmemcached-dev \
4747
libsqlite3-dev \
48-
libonig-dev \
4948
libyaml-dev \
50-
libssl-dev \
5149
libicu-dev \
5250
libzip-dev \
5351
zlib1g-dev \
@@ -58,27 +56,28 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
5856
# endregion
5957

6058
docker-php-source extract
59+
export num_cpu=$(nproc)
6160

6261
# region Install PIE extensions
63-
pie install -j$(nproc) phpredis/phpredis \
62+
pie install -j${num_cpu} phpredis/phpredis \
6463
--enable-redis \
6564
;
66-
pie install -j$(nproc) apcu/apcu \
65+
pie install -j${num_cpu} apcu/apcu \
6766
--enable-apcu \
6867
;
69-
pie install -j$(nproc) pecl/yaml
70-
pie install -j$(nproc) php-memcached/php-memcached \
68+
pie install -j${num_cpu} pecl/yaml
69+
pie install -j${num_cpu} php-memcached/php-memcached \
7170
--enable-memcached-session \
7271
--enable-memcached-json \
7372
;
74-
#pie install -j$(nproc) csvtoolkit/fastcsv \
73+
#pie install -j${num_cpu} csvtoolkit/fastcsv \
7574
# --enable-fastcsv \
7675
#;
7776
# endregion
7877

7978
# region Install built-in extensions
8079
docker-php-ext-configure zip
81-
docker-php-ext-install -j$(nproc) \
80+
docker-php-ext-install -j${num_cpu} \
8281
pdo_sqlite \
8382
pdo_pgsql \
8483
sockets \
@@ -90,7 +89,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
9089

9190
# If we're running on PHP 8.4, install the opcache extension (it's bundled in later versions)
9291
if php --version | grep -q "PHP 8\.4"; then
93-
docker-php-ext-install -j$(nproc) opcache
92+
docker-php-ext-install -j${num_cpu} opcache
9493
fi
9594

9695
# endregion
@@ -113,10 +112,11 @@ EOF
113112

114113
FROM upstream AS base
115114
ARG user="php"
116-
ARG uid="5000"
115+
ARG uid="900"
117116

118117
RUN <<EOF
119118
# region Remove Build Dependencies
119+
export DEBIAN_FRONTEND=noninteractive
120120
apt-get purge \
121121
--option APT::AutoRemove::RecommendsImportant=false \
122122
--auto-remove \
@@ -183,7 +183,7 @@ EXPOSE 2019/udp
183183

184184
FROM base AS dev
185185
ARG user="php"
186-
ARG uid="5000"
186+
ARG uid="900"
187187
ENV COMPOSER_ALLOW_SUPERUSER="1"
188188
ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS="1"
189189

@@ -223,12 +223,12 @@ COPY --link --from=composer:latest /usr/bin/composer /usr/bin/composer
223223
WORKDIR "/app"
224224

225225
ONBUILD ARG user="php"
226-
ONBUILD ARG uid="5000"
226+
ONBUILD ARG uid="900"
227227
USER "${uid}:${uid}"
228228

229229
FROM base AS prod
230230
ARG user="php"
231-
ARG uid="5000"
231+
ARG uid="900"
232232
ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS="0"
233233
ENV PHP_OPCACHE_MAX_ACCELERATED_FILES="10000"
234234
ENV PHP_OPCACHE_MEMORY_CONSUMPTION="192"
@@ -239,5 +239,5 @@ RUN ln -sf "${PHP_INI_DIR}/php.ini-production" "${PHP_INI_DIR}/php.ini"
239239
WORKDIR "/app"
240240

241241
ONBUILD ARG user="php"
242-
ONBUILD ARG uid="5000"
242+
ONBUILD ARG uid="900"
243243
USER "${uid}:${uid}"

0 commit comments

Comments
 (0)