From fd05c37d869dbe56594acf08d49a33bb0ac7243f Mon Sep 17 00:00:00 2001 From: Constantin Graf Date: Wed, 16 Sep 2026 17:22:50 +0200 Subject: [PATCH] Update docker image --- docker/prod/Dockerfile | 150 +++++++----------- docker/prod/deployment/healthcheck | 7 + .../deployment/octane/FrankenPHP/Caddyfile | 11 +- .../FrankenPHP/supervisord.frankenphp.conf | 57 +------ docker/prod/deployment/php.ini | 17 +- docker/prod/deployment/supervisord.conf | 4 +- .../prod/deployment/supervisord.horizon.conf | 2 + .../prod/deployment/supervisord.inertia.conf | 15 ++ .../prod/deployment/supervisord.reverb.conf | 2 + .../deployment/supervisord.scheduler.conf | 2 + .../prod/deployment/supervisord.services.conf | 69 ++++++++ .../prod/deployment/supervisord.worker.conf | 2 + 12 files changed, 180 insertions(+), 158 deletions(-) create mode 100644 docker/prod/deployment/supervisord.inertia.conf create mode 100644 docker/prod/deployment/supervisord.services.conf diff --git a/docker/prod/Dockerfile b/docker/prod/Dockerfile index 77eddb52..1d0c9c6b 100644 --- a/docker/prod/Dockerfile +++ b/docker/prod/Dockerfile @@ -1,7 +1,6 @@ ARG PHP_VERSION=8.3 -ARG FRANKENPHP_VERSION=1.8 +ARG FRANKENPHP_VERSION=1.11 ARG COMPOSER_VERSION=2.8 -ARG BUN_VERSION="latest" ARG APP_ENV ARG DOCKER_FILES_BASE_PATH="docker/prod/" @@ -16,13 +15,13 @@ RUN CGO_ENABLED=1 \ XCADDY_GO_BUILD_FLAGS="-ldflags='-w -s' -tags=nobadger,nomysql,nopgx" \ CGO_CFLAGS=$(php-config --includes) \ CGO_LDFLAGS="$(php-config --ldflags) $(php-config --libs)" \ - xcaddy build v2.10.0 \ + xcaddy build \ --output /usr/local/bin/frankenphp \ --with github.com/dunglas/frankenphp=./ \ --with github.com/dunglas/frankenphp/caddy=./caddy/ \ --with github.com/dunglas/caddy-cbrotli -FROM dunglas/frankenphp:${FRANKENPHP_VERSION}-php${PHP_VERSION} AS base +FROM dunglas/frankenphp:${FRANKENPHP_VERSION}-php${PHP_VERSION} COPY --from=upstream /usr/local/bin/frankenphp /usr/local/bin/frankenphp @@ -32,26 +31,28 @@ LABEL org.opencontainers.image.description="solidtime is a modern open source ti LABEL org.opencontainers.image.source="https://github.com/solidtime-io/solidtime" LABEL org.opencontainers.image.licenses="AGPL" -ARG WWWUSER=1000 -ARG WWWGROUP=1000 +ARG USER_ID=1000 +ARG GROUP_ID=1000 ARG TZ=UTC -ARG APP_DIR=/var/www/html -ARG APP_ENV -ARG APP_HOST ARG DOCKER_FILES_BASE_PATH ENV DEBIAN_FRONTEND=noninteractive \ TERM=xterm-color \ OCTANE_SERVER=frankenphp \ TZ=${TZ} \ - USER=octane \ - ROOT=${APP_DIR} \ - APP_ENV=${APP_ENV} \ + LANG=C.UTF-8 \ + USER=laravel \ + ROOT=/var/www/html \ + APP_ENV=production \ + COMPOSER_ALLOW_SUPERUSER=1 \ COMPOSER_FUND=0 \ - COMPOSER_MAX_PARALLEL_HTTP=24 \ - XDG_CONFIG_HOME=${APP_DIR}/.config \ - XDG_DATA_HOME=${APP_DIR}/.data \ - SERVER_NAME=${APP_HOST} + COMPOSER_MAX_PARALLEL_HTTP=48 \ + WITH_HORIZON=false \ + WITH_SCHEDULER=false \ + WITH_REVERB=false \ + WITH_SSR=false + +ENV XDG_CONFIG_HOME=${ROOT}/.config XDG_DATA_HOME=${ROOT}/.data WORKDIR ${ROOT} @@ -60,6 +61,9 @@ SHELL ["/bin/bash", "-eou", "pipefail", "-c"] RUN ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime \ && echo ${TZ} > /etc/timezone +RUN echo "Acquire::http::No-Cache true;" >> /etc/apt/apt.conf.d/99custom && \ + echo "Acquire::BrokenProxy true;" >> /etc/apt/apt.conf.d/99custom + RUN apt-get update; \ apt-get upgrade -yqq; \ apt-get install -yqq --no-install-recommends --show-progress \ @@ -68,40 +72,36 @@ RUN apt-get update; \ wget \ vim \ git \ + unzip \ ncdu \ procps \ - unzip \ ca-certificates \ supervisor \ libsodium-dev \ - libbrotli-dev \ - # Install PHP extensions (included with dunglas/frankenphp) +# && curl -fsSL https://bun.sh/install | BUN_INSTALL=/usr bash \ && install-php-extensions \ + apcu \ bz2 \ pcntl \ mbstring \ bcmath \ sockets \ - pgsql \ pdo_pgsql \ opcache \ exif \ pdo_mysql \ zip \ uv \ - vips \ intl \ gd \ redis \ rdkafka \ - memcached \ - igbinary \ + ffi \ ldap \ && apt-get -y autoremove \ && apt-get clean \ && docker-php-source delete \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ - && rm /var/log/lastlog /var/log/faillog + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /var/log/lastlog /var/log/faillog RUN arch="$(uname -m)" \ && case "$arch" in \ @@ -111,106 +111,64 @@ RUN arch="$(uname -m)" \ x86) _cronic_fname='supercronic-linux-386' ;; \ *) echo >&2 "error: unsupported architecture: $arch"; exit 1 ;; \ esac \ - && wget -q "https://github.com/aptible/supercronic/releases/download/v0.2.29/${_cronic_fname}" \ + && wget -q "https://github.com/aptible/supercronic/releases/download/v0.2.38/${_cronic_fname}" \ -O /usr/bin/supercronic \ && chmod +x /usr/bin/supercronic \ && mkdir -p /etc/supercronic \ && echo "*/1 * * * * php ${ROOT}/artisan schedule:run --no-interaction" > /etc/supercronic/laravel RUN userdel --remove --force www-data \ - && groupadd --force -g ${WWWGROUP} ${USER} \ - && useradd -ms /bin/bash --no-log-init --no-user-group -g ${WWWGROUP} -u ${WWWUSER} ${USER} \ - && setcap -r /usr/local/bin/frankenphp - -RUN chown -R ${USER}:${USER} ${ROOT} /var/{log,run} \ - && chmod -R a+rw ${ROOT} /var/{log,run} + && groupadd --force -g ${GROUP_ID} ${USER} \ + && useradd -ms /bin/bash --no-log-init --no-user-group -g ${GROUP_ID} -u ${USER_ID} ${USER} RUN cp ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini -USER ${USER} +COPY --link --from=vendor /usr/bin/composer /usr/bin/composer +COPY --link ${DOCKER_FILES_BASE_PATH}deployment/supervisord.conf /etc/ +COPY --link ${DOCKER_FILES_BASE_PATH}deployment/octane/FrankenPHP/supervisord.frankenphp.conf /etc/supervisor/conf.d/ +COPY --link ${DOCKER_FILES_BASE_PATH}deployment/supervisord.*.conf /etc/supervisor/conf.d/ +COPY --link ${DOCKER_FILES_BASE_PATH}deployment/start-container /usr/local/bin/start-container +COPY --link ${DOCKER_FILES_BASE_PATH}deployment/healthcheck /usr/local/bin/healthcheck +COPY --link ${DOCKER_FILES_BASE_PATH}deployment/php.ini ${PHP_INI_DIR}/conf.d/99-php.ini +#COPY --link composer.* ./ -COPY --link --chown=${WWWUSER}:${WWWUSER} --from=vendor /usr/bin/composer /usr/bin/composer - -COPY --link --chown=${WWWUSER}:${WWWUSER} ${DOCKER_FILES_BASE_PATH}deployment/supervisord.conf /etc/ -COPY --link --chown=${WWWUSER}:${WWWUSER} ${DOCKER_FILES_BASE_PATH}deployment/octane/FrankenPHP/supervisord.frankenphp.conf /etc/supervisor/conf.d/ -COPY --link --chown=${WWWUSER}:${WWWUSER} ${DOCKER_FILES_BASE_PATH}deployment/supervisord.*.conf /etc/supervisor/conf.d/ -COPY --link --chown=${WWWUSER}:${WWWUSER} ${DOCKER_FILES_BASE_PATH}deployment/start-container /usr/local/bin/start-container -COPY --link --chown=${WWWUSER}:${WWWUSER} ${DOCKER_FILES_BASE_PATH}deployment/healthcheck /usr/local/bin/healthcheck -COPY --link --chown=${WWWUSER}:${WWWUSER} ${DOCKER_FILES_BASE_PATH}deployment/php.ini ${PHP_INI_DIR}/conf.d/99-octane.ini - -RUN chmod +x /usr/local/bin/start-container /usr/local/bin/healthcheck - -########################################### - -#FROM base AS common -# -#USER ${USER} -# -#COPY --link --chown=${WWWUSER}:${WWWUSER} . . -# #RUN composer install \ # --no-dev \ # --no-interaction \ # --no-autoloader \ # --no-ansi \ # --no-scripts \ +# --no-progress \ # --audit -########################################### -# Build frontend assets with Bun -########################################### - -#FROM oven/bun:${BUN_VERSION} AS build -# -#ARG APP_ENV -# -#ENV ROOT=/var/www/html \ -# APP_ENV=${APP_ENV} \ -# NODE_ENV=${APP_ENV:-production} -# -#WORKDIR ${ROOT} -# #COPY --link package.json bun.lock* ./ -# + #RUN bun install --frozen-lockfile -# -#COPY --link . . -#COPY --link --from=common ${ROOT}/vendor vendor -# -#RUN bun run build -########################################### - -#FROM common AS runner - -USER ${USER} - -ENV WITH_HORIZON=false \ - WITH_SCHEDULER=false \ - WITH_REVERB=false - -COPY --link --chown=${WWWUSER}:${WWWUSER} . ./ - -RUN test -z "$(find . -name .git -print -quit)" -#COPY --link --chown=${WWWUSER}:${WWWUSER} --from=build ${ROOT}/public public +COPY --link . . RUN mkdir -p \ storage/framework/{sessions,views,cache,testing} \ storage/logs \ - bootstrap/cache && chmod -R a+rw storage + bootstrap/cache \ + && chmod +x /usr/local/bin/start-container /usr/local/bin/healthcheck -#RUN composer install \ -# --classmap-authoritative \ -# --no-interaction \ -# --no-ansi \ -# --no-dev \ -# && composer clear-cache +RUN composer dump-autoload \ + --optimize \ + --apcu \ + --no-dev -RUN cat .env -#RUN php artisan env +#RUN bun run build + +RUN chown -R ${USER_ID}:${GROUP_ID} ${ROOT} \ + && find / -perm /6000 -type f -exec chmod a-s {} + 2>/dev/null || true + +USER ${USER} EXPOSE 8000 +#EXPOSE 2019 +#EXPOSE 8080 ENTRYPOINT ["start-container"] -#HEALTHCHECK --start-period=5s --interval=2s --timeout=5s --retries=8 CMD healthcheck || exit 1 +#HEALTHCHECK --start-period=30s --interval=10s --timeout=3s --retries=3 CMD healthcheck || exit 1 diff --git a/docker/prod/deployment/healthcheck b/docker/prod/deployment/healthcheck index c4281814..7bcb3e0e 100644 --- a/docker/prod/deployment/healthcheck +++ b/docker/prod/deployment/healthcheck @@ -22,6 +22,13 @@ elif [ "${container_mode}" = "reverb" ]; then echo "Healthcheck failed." exit 1 fi +elif [ "${container_mode}" = "ssr" ]; then + if [ "$(supervisorctl status inertia-ssr-server:inertia-ssr-server_0 | awk '{print tolower($2)}')" = "running" ]; then + exit 0 + else + echo "Healthcheck failed." + exit 1 + fi elif [ "${container_mode}" = "worker" ]; then if [ "$(supervisorctl status worker:worker_0 | awk '{print tolower($2)}')" = "running" ]; then exit 0 diff --git a/docker/prod/deployment/octane/FrankenPHP/Caddyfile b/docker/prod/deployment/octane/FrankenPHP/Caddyfile index 08211d09..3e0337d9 100644 --- a/docker/prod/deployment/octane/FrankenPHP/Caddyfile +++ b/docker/prod/deployment/octane/FrankenPHP/Caddyfile @@ -3,6 +3,14 @@ admin {$CADDY_SERVER_ADMIN_HOST}:{$CADDY_SERVER_ADMIN_PORT} + log { + level {$CADDY_SERVER_LOG_LEVEL:WARN} + } + + auto_https off + + skip_install_trust + frankenphp { worker "{$APP_PUBLIC_PATH}/frankenphp-worker.php" {$CADDY_SERVER_WORKER_COUNT} } @@ -20,7 +28,7 @@ {$CADDY_SERVER_SERVER_NAME} { log { - level WARN + level {$CADDY_SERVER_LOG_LEVEL:WARN} format filter { wrap {$CADDY_SERVER_LOGGER} @@ -60,7 +68,6 @@ error @rejected 401 php_server { - index frankenphp-worker.php try_files {path} frankenphp-worker.php resolve_root_symlink } diff --git a/docker/prod/deployment/octane/FrankenPHP/supervisord.frankenphp.conf b/docker/prod/deployment/octane/FrankenPHP/supervisord.frankenphp.conf index 20dbc3ee..a3cb6777 100644 --- a/docker/prod/deployment/octane/FrankenPHP/supervisord.frankenphp.conf +++ b/docker/prod/deployment/octane/FrankenPHP/supervisord.frankenphp.conf @@ -1,65 +1,18 @@ [program:octane] process_name = %(program_name)s_%(process_num)s -command = php %(ENV_ROOT)s/artisan octane:frankenphp --host=0.0.0.0 --port=8000 --admin-port=2019 --caddyfile=%(ENV_ROOT)s/docker/prod/deployment/octane/FrankenPHP/Caddyfile +command = php %(ENV_ROOT)s/artisan octane:frankenphp --host=0.0.0.0 --port=8000 --admin-host=0.0.0.0 --admin-port=2019 --log-level=WARN --caddyfile=%(ENV_ROOT)s/docker/prod/deployment/octane/FrankenPHP/Caddyfile user = %(ENV_USER)s priority = 1 autostart = true autorestart = true +stopwaitsecs = 30 +stopasgroup = true +killasgroup = true environment = LARAVEL_OCTANE = "1" stdout_logfile = /dev/stdout stdout_logfile_maxbytes = 0 stderr_logfile = /dev/stderr stderr_logfile_maxbytes = 0 -[program:horizon] -process_name = %(program_name)s_%(process_num)s -command = php %(ENV_ROOT)s/artisan horizon -user = %(ENV_USER)s -priority = 3 -autostart = %(ENV_WITH_HORIZON)s -autorestart = true -stdout_logfile = %(ENV_ROOT)s/storage/logs/horizon.log -stdout_logfile_maxbytes = 200MB -stderr_logfile = %(ENV_ROOT)s/storage/logs/horizon.log -stderr_logfile_maxbytes = 200MB -stopwaitsecs = 3600 - -[program:scheduler] -process_name = %(program_name)s_%(process_num)s -command = supercronic -overlapping /etc/supercronic/laravel -user = %(ENV_USER)s -autostart = %(ENV_WITH_SCHEDULER)s -autorestart = true -stdout_logfile = %(ENV_ROOT)s/storage/logs/scheduler.log -stdout_logfile_maxbytes = 200MB -stderr_logfile = %(ENV_ROOT)s/storage/logs/scheduler.log -stderr_logfile_maxbytes = 200MB - -[program:clear-scheduler-cache] -process_name = %(program_name)s_%(process_num)s -command = php %(ENV_ROOT)s/artisan schedule:clear-cache -user = %(ENV_USER)s -autostart = %(ENV_WITH_SCHEDULER)s -autorestart = false -startsecs = 0 -startretries = 1 -stdout_logfile = %(ENV_ROOT)s/storage/logs/scheduler.log -stdout_logfile_maxbytes = 200MB -stderr_logfile = %(ENV_ROOT)s/storage/logs/scheduler.log -stderr_logfile_maxbytes = 200MB - -[program:reverb] -process_name = %(program_name)s_%(process_num)s -command = php %(ENV_ROOT)s/artisan reverb:start -user = %(ENV_USER)s -priority = 2 -autostart = %(ENV_WITH_REVERB)s -autorestart = true -stdout_logfile = %(ENV_ROOT)s/storage/logs/reverb.log -stdout_logfile_maxbytes = 200MB -stderr_logfile = %(ENV_ROOT)s/storage/logs/reverb.log -stderr_logfile_maxbytes = 200MB -minfds = 10000 - [include] -files = /etc/supervisord.conf +files = /etc/supervisord.conf /etc/supervisor/conf.d/supervisord.services.conf diff --git a/docker/prod/deployment/php.ini b/docker/prod/deployment/php.ini index d770d10b..16d3bd8f 100644 --- a/docker/prod/deployment/php.ini +++ b/docker/prod/deployment/php.ini @@ -2,8 +2,9 @@ post_max_size = 100M upload_max_filesize = 100M expose_php = 0 -realpath_cache_size = 16M -realpath_cache_ttl = 360 +realpath_cache_size = 32M +realpath_cache_ttl = 720 +memory_limit = 256M max_input_time = 5 register_argc_argv = 0 date.timezone = ${TZ:-UTC} @@ -11,18 +12,24 @@ date.timezone = ${TZ:-UTC} [Opcache] opcache.enable = 1 opcache.enable_cli = 1 -opcache.memory_consumption = 256M +opcache.memory_consumption = 256 opcache.use_cwd = 0 +opcache.save_comments = 1 opcache.max_file_size = 0 opcache.max_accelerated_files = 32531 opcache.validate_timestamps = 0 opcache.file_update_protection = 0 opcache.interned_strings_buffer = 16 +opcache.enable_file_override = 1 +opcache.file_cache_consistency_checks = 0 +opcache.file_cache = /tmp/opcache-file-cache [JIT] opcache.jit_buffer_size = 128M -opcache.jit = function -opcache.jit_prof_threshold = 0.001 +opcache.jit = tracing +opcache.jit_hot_loop = 16 +opcache.jit_hot_func = 32 +opcache.jit_hot_return = 4 opcache.jit_max_root_traces = 2048 opcache.jit_max_side_traces = 256 diff --git a/docker/prod/deployment/supervisord.conf b/docker/prod/deployment/supervisord.conf index 80d8cdcd..64559a45 100644 --- a/docker/prod/deployment/supervisord.conf +++ b/docker/prod/deployment/supervisord.conf @@ -1,8 +1,6 @@ [supervisord] nodaemon = true user = %(ENV_USER)s -logfile = /var/log/supervisor/supervisord.log -pidfile = /var/run/supervisord.pid [supervisorctl] @@ -10,4 +8,4 @@ pidfile = /var/run/supervisord.pid port = 127.0.0.1:9001 [rpcinterface:supervisor] -supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface \ No newline at end of file diff --git a/docker/prod/deployment/supervisord.horizon.conf b/docker/prod/deployment/supervisord.horizon.conf index c57062c6..be096261 100644 --- a/docker/prod/deployment/supervisord.horizon.conf +++ b/docker/prod/deployment/supervisord.horizon.conf @@ -4,6 +4,8 @@ command = php %(ENV_ROOT)s/artisan horizon user = %(ENV_USER)s autostart = true autorestart = true +stopasgroup = true +killasgroup = true stdout_logfile = /dev/stdout stdout_logfile_maxbytes = 0 stderr_logfile = /dev/stderr diff --git a/docker/prod/deployment/supervisord.inertia.conf b/docker/prod/deployment/supervisord.inertia.conf new file mode 100644 index 00000000..25b72dc7 --- /dev/null +++ b/docker/prod/deployment/supervisord.inertia.conf @@ -0,0 +1,15 @@ +[program:inertia-ssr-server] +process_name = %(program_name)s_%(process_num)s +command = php %(ENV_ROOT)s/artisan inertia:start-ssr --runtime=bun --quiet +user = %(ENV_USER)s +autostart = true +autorestart = true +stopasgroup = true +killasgroup = true +stdout_logfile = /dev/stdout +stdout_logfile_maxbytes = 0 +stderr_logfile = /dev/stderr +stderr_logfile_maxbytes = 0 + +[include] +files = /etc/supervisord.conf diff --git a/docker/prod/deployment/supervisord.reverb.conf b/docker/prod/deployment/supervisord.reverb.conf index 6e540eb1..0e205adc 100644 --- a/docker/prod/deployment/supervisord.reverb.conf +++ b/docker/prod/deployment/supervisord.reverb.conf @@ -4,6 +4,8 @@ command = php %(ENV_ROOT)s/artisan reverb:start user = %(ENV_USER)s autostart = true autorestart = true +stopasgroup = true +killasgroup = true stdout_logfile = /dev/stdout stdout_logfile_maxbytes = 0 stderr_logfile = /dev/stderr diff --git a/docker/prod/deployment/supervisord.scheduler.conf b/docker/prod/deployment/supervisord.scheduler.conf index 20722be5..90f3cd56 100644 --- a/docker/prod/deployment/supervisord.scheduler.conf +++ b/docker/prod/deployment/supervisord.scheduler.conf @@ -4,6 +4,8 @@ command = supercronic -overlapping /etc/supercronic/laravel user = %(ENV_USER)s autostart = true autorestart = true +stopasgroup = true +killasgroup = true stdout_logfile = /dev/stdout stdout_logfile_maxbytes = 0 stderr_logfile = /dev/stderr diff --git a/docker/prod/deployment/supervisord.services.conf b/docker/prod/deployment/supervisord.services.conf new file mode 100644 index 00000000..43dc4985 --- /dev/null +++ b/docker/prod/deployment/supervisord.services.conf @@ -0,0 +1,69 @@ +[program:horizon] +process_name = %(program_name)s_%(process_num)s +command = php %(ENV_ROOT)s/artisan horizon +user = %(ENV_USER)s +priority = 4 +autostart = %(ENV_WITH_HORIZON)s +autorestart = true +stopasgroup = true +killasgroup = true +stdout_logfile = %(ENV_ROOT)s/storage/logs/horizon.log +stdout_logfile_maxbytes = 200MB +stderr_logfile = %(ENV_ROOT)s/storage/logs/horizon.log +stderr_logfile_maxbytes = 200MB +stopwaitsecs = 3600 + +[program:scheduler] +process_name = %(program_name)s_%(process_num)s +command = supercronic -overlapping /etc/supercronic/laravel +user = %(ENV_USER)s +autostart = %(ENV_WITH_SCHEDULER)s +autorestart = true +stopasgroup = true +killasgroup = true +stdout_logfile = %(ENV_ROOT)s/storage/logs/scheduler.log +stdout_logfile_maxbytes = 200MB +stderr_logfile = %(ENV_ROOT)s/storage/logs/scheduler.log +stderr_logfile_maxbytes = 200MB + +[program:clear-scheduler-cache] +process_name = %(program_name)s_%(process_num)s +command = php %(ENV_ROOT)s/artisan schedule:clear-cache +user = %(ENV_USER)s +autostart = %(ENV_WITH_SCHEDULER)s +autorestart = false +startsecs = 0 +startretries = 1 +stdout_logfile = %(ENV_ROOT)s/storage/logs/scheduler.log +stdout_logfile_maxbytes = 200MB +stderr_logfile = %(ENV_ROOT)s/storage/logs/scheduler.log +stderr_logfile_maxbytes = 200MB + +[program:reverb] +process_name = %(program_name)s_%(process_num)s +command = php %(ENV_ROOT)s/artisan reverb:start +user = %(ENV_USER)s +priority = 3 +autostart = %(ENV_WITH_REVERB)s +autorestart = true +stopasgroup = true +killasgroup = true +stdout_logfile = %(ENV_ROOT)s/storage/logs/reverb.log +stdout_logfile_maxbytes = 200MB +stderr_logfile = %(ENV_ROOT)s/storage/logs/reverb.log +stderr_logfile_maxbytes = 200MB +minfds = 10000 + +[program:inertia-ssr-server] +process_name = %(program_name)s_%(process_num)s +command = php %(ENV_ROOT)s/artisan inertia:start-ssr --runtime=bun --quiet +user = %(ENV_USER)s +priority = 2 +autostart = %(ENV_WITH_SSR)s +autorestart = true +stopasgroup = true +killasgroup = true +stdout_logfile = %(ENV_ROOT)s/storage/logs/inertia-ssr-server.log +stdout_logfile_maxbytes = 200MB +stderr_logfile = %(ENV_ROOT)s/storage/logs/inertia-ssr-server.log +stderr_logfile_maxbytes = 200MB diff --git a/docker/prod/deployment/supervisord.worker.conf b/docker/prod/deployment/supervisord.worker.conf index 0d939c09..1da7e6e9 100644 --- a/docker/prod/deployment/supervisord.worker.conf +++ b/docker/prod/deployment/supervisord.worker.conf @@ -4,6 +4,8 @@ command = %(ENV_WORKER_COMMAND)s user = %(ENV_USER)s autostart = true autorestart = true +stopasgroup = true +killasgroup = true stdout_logfile = /dev/stdout stdout_logfile_maxbytes = 0 stderr_logfile = /dev/stderr