@@ -7,7 +7,7 @@ ARG COMPOSER_VERSION=latest
7
7
ARG OCTANE_SERVER="swoole"
8
8
9
9
# ##########################################
10
- # Build frontend assets with NPM
10
+ # Build frontend assets with PNPM
11
11
# ##########################################
12
12
13
13
ARG NODE_VERSION=18-bullseye-slim
@@ -18,23 +18,23 @@ ENV ROOT=/var/www/html
18
18
19
19
WORKDIR $ROOT
20
20
21
- RUN npm config set update-notifier false && npm set progress=false
21
+ RUN npm install -g pnpm
22
22
23
- COPY package* .json ./
23
+ COPY package.json pnpm-lock.yaml* ./
24
24
25
- RUN if [ -f $ROOT/package -lock.json ]; \
25
+ RUN if [ -f $ROOT/pnpm -lock.yaml ]; \
26
26
then \
27
- npm ci --no-optional --loglevel=error --no-audit ; \
27
+ pnpm install --frozen-lockfile --no-optional --prefer-offline ; \
28
28
elif [ -f $ROOT/package.json ]; \
29
29
then \
30
- npm install --no-optional --loglevel=error --no-audit ; \
30
+ pnpm install --no-optional --prefer-offline ; \
31
31
fi
32
32
33
33
COPY . .
34
34
35
- RUN if [ -f $ROOT/package.json ] || [ -f $ROOT/package -lock.json ]; \
35
+ RUN if [ -f $ROOT/package.json ] || [ -f $ROOT/pnpm -lock.yaml ]; \
36
36
then \
37
- npm run build; \
37
+ pnpm run build; \
38
38
fi
39
39
40
40
# ##########################################
@@ -90,7 +90,8 @@ ENV DEBIAN_FRONTEND=noninteractive \
90
90
CONTAINER_MODE=${CONTAINER_MODE} \
91
91
APP_WITH_HORIZON=${APP_WITH_HORIZON} \
92
92
APP_WITH_SCHEDULER=${APP_WITH_SCHEDULER} \
93
- OCTANE_SERVER=${OCTANE_SERVER}
93
+ OCTANE_SERVER=${OCTANE_SERVER} \
94
+ NON_ROOT_USER=octane
94
95
95
96
ENV ROOT=/var/www/html
96
97
WORKDIR $ROOT
@@ -233,7 +234,7 @@ ARG SERVER=swoole
233
234
234
235
RUN if [ ${OCTANE_SERVER} = "swoole" ]; then \
235
236
apt-get install -yqq --no-install-recommends --show-progress libc-ares-dev \
236
- && pecl -q install -o -f -D 'enable-openssl="yes" enable-http2="yes" enable-swoole-curl="yes" enable-mysqlnd="yes" enable-cares="yes"' ${SERVER} \
237
+ && printf " \n " | pecl -q install -o -f -D 'enable-openssl="yes" enable-http2="yes" enable-swoole-curl="yes" enable-mysqlnd="yes" enable-cares="yes"' ${SERVER} \
237
238
&& docker-php-ext-enable ${SERVER}; \
238
239
fi
239
240
@@ -323,43 +324,48 @@ RUN if [ ${CONTAINER_MODE} = 'scheduler' ] || [ ${APP_WITH_SCHEDULER} = true ];
323
324
324
325
# ##########################################
325
326
326
- RUN groupadd --force -g $WWWGROUP octane \
327
- && useradd -ms /bin/bash --no-log-init --no-user-group -g $WWWGROUP -u $WWWUSER octane
328
-
329
327
RUN apt-get clean \
330
328
&& docker-php-source delete \
331
329
&& pecl clear-cache \
332
330
&& rm -R /tmp/pear \
333
331
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
334
332
&& rm /var/log/lastlog /var/log/faillog
335
333
336
- COPY . .
337
- COPY --from=build ${ROOT}/public public
338
- COPY --from=vendor ${ROOT}/vendor vendor
339
- COPY --from=vendor ${ROOT}/rr* ${ROOT}/composer.json ./
334
+ RUN groupadd --force -g $WWWGROUP $NON_ROOT_USER \
335
+ && useradd -ms /bin/bash --no-log-init --no-user-group -g $WWWGROUP -u $WWWUSER $NON_ROOT_USER
336
+
337
+ RUN chown -R $NON_ROOT_USER:$NON_ROOT_USER $ROOT /var/log/
338
+
339
+ RUN chmod -R ug+rw /var/log/
340
+
341
+ USER $NON_ROOT_USER
342
+
343
+ COPY --chown=$NON_ROOT_USER:$NON_ROOT_USER . .
344
+ COPY --chown=$NON_ROOT_USER:$NON_ROOT_USER --from=build ${ROOT}/public public
345
+ COPY --chown=$NON_ROOT_USER:$NON_ROOT_USER --from=vendor ${ROOT}/vendor vendor
346
+ COPY --chown=$NON_ROOT_USER:$NON_ROOT_USER --from=vendor ${ROOT}/rr* ${ROOT}/composer.json ./
340
347
341
348
RUN mkdir -p \
342
349
storage/framework/{sessions,views,cache} \
343
350
storage/logs \
344
- bootstrap/cache \
345
- && chown -R octane:octane \
346
- storage \
347
- bootstrap/cache \
348
- && chmod -R ug+rwx storage bootstrap/cache
351
+ bootstrap/cache
349
352
350
- COPY deployment/octane/supervisord* /etc/supervisor/conf.d/
351
- COPY deployment/octane/php.ini /usr/local/etc/php/conf.d/octane.ini
352
- COPY deployment/octane/.rr.prod.yaml ./.rr.yaml
353
+ COPY --chown=$NON_ROOT_USER:$NON_ROOT_USER deployment/octane/supervisord* /etc/supervisor/conf.d/
354
+ COPY --chown=$NON_ROOT_USER:$NON_ROOT_USER deployment/octane/php.ini /usr/local/etc/php/conf.d/99-octane.ini
355
+ COPY --chown=$NON_ROOT_USER:$NON_ROOT_USER deployment/octane/.rr.prod.yaml ./.rr.yaml
356
+ COPY --chown=$NON_ROOT_USER:$NON_ROOT_USER deployment/octane/start-container /usr/local/bin/start-container
357
+
358
+ RUN chmod +x /usr/local/bin/start-container
353
359
354
- RUN chmod +x deployment/octane/entrypoint.sh
355
360
RUN if [ -f "rr" ]; then \
356
361
chmod +x rr; \
357
362
fi
363
+
358
364
RUN cat deployment/octane/utilities.sh >> ~/.bashrc
359
365
360
366
EXPOSE 9000
361
367
EXPOSE 6001
362
368
363
- ENTRYPOINT ["deployment/octane/entrypoint.sh " ]
369
+ ENTRYPOINT ["start-container " ]
364
370
365
371
HEALTHCHECK --start-period=5s --interval=2s --timeout=5s --retries=8 CMD php artisan octane:status || exit 1
0 commit comments