From 942e819addc20975554dcd2ff3a74c673de62f20 Mon Sep 17 00:00:00 2001 From: smortexa Date: Fri, 16 Feb 2024 01:42:15 +0330 Subject: [PATCH 1/5] wip --- FrankenPHP.Dockerfile | 110 ++++++------------ RoadRunner.Dockerfile | 110 ++++++------------ Swoole.Dockerfile | 108 ++++++----------- .../FrankenPHP/supervisord.frankenphp.conf | 10 +- .../RoadRunner/supervisord.roadrunner.conf | 10 +- .../octane/Swoole/supervisord.swoole.conf | 10 +- deployment/supervisord.horizon.conf | 4 +- deployment/supervisord.scheduler.conf | 6 +- deployment/supervisord.worker.conf | 4 +- deployment/utilities.sh | 14 --- 10 files changed, 127 insertions(+), 259 deletions(-) diff --git a/FrankenPHP.Dockerfile b/FrankenPHP.Dockerfile index da269cd..e88772b 100644 --- a/FrankenPHP.Dockerfile +++ b/FrankenPHP.Dockerfile @@ -41,6 +41,10 @@ FROM dunglas/frankenphp:${FRANKENPHP_VERSION} AS server FROM php:${PHP_VERSION}-zts-bookworm LABEL maintainer="SMortexa " +LABEL org.opencontainers.image.title="Laravel Octane Dockerfile" +LABEL org.opencontainers.image.description="Production-ready Dockerfile for Laravel Octane" +LABEL org.opencontainers.image.source=https://github.com/exaco/laravel-octane-dockerfile +LABEL org.opencontainers.image.licenses=MIT ARG WWWUSER=1000 ARG WWWGROUP=1000 @@ -51,8 +55,10 @@ ENV DEBIAN_FRONTEND=noninteractive \ WITH_HORIZON=false \ WITH_SCHEDULER=false \ OCTANE_SERVER=frankenphp \ - NON_ROOT_USER=octane \ - ROOT=/var/www/html + USER=octane \ + ROOT=/var/www/html \ + COMPOSER_FUND=0 \ + COMPOSER_MAX_PARALLEL_HTTP=24 WORKDIR ${ROOT} @@ -61,59 +67,21 @@ SHELL ["/bin/bash", "-eou", "pipefail", "-c"] RUN ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime \ && echo ${TZ} > /etc/timezone +ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/ + RUN apt-get update; \ apt-get upgrade -yqq; \ - pecl -q channel-update pecl.php.net; \ apt-get install -yqq --no-install-recommends --show-progress \ apt-utils \ - gnupg \ - git \ curl \ wget \ nano \ - rsync \ ncdu \ - sqlite3 \ - libcurl4-openssl-dev \ ca-certificates \ supervisor \ - libmemcached-dev \ - libz-dev \ - libbrotli-dev \ - libpq-dev \ - libjpeg-dev \ - libpng-dev \ - librsvg2-bin \ - libfreetype6-dev \ - libssl-dev \ - libwebp-dev \ - libmcrypt-dev \ - libldap2-dev \ - libonig-dev \ - libreadline-dev \ libsodium-dev \ - libsqlite3-dev \ - libmagickwand-dev \ - libzip-dev zip unzip \ - libargon2-1 \ - libidn2-0 \ - libpcre2-8-0 \ - librdkafka-dev \ - libpcre3 \ - libxml2 \ - libxslt-dev \ - libzstd1 \ - libc-ares-dev \ - procps \ - postgresql-client \ - postgis \ - default-mysql-client \ - libbz2-dev \ - zlib1g-dev \ - libicu-dev \ - g++ \ # Install PHP extensions - && docker-php-ext-install \ + && install-php-extensions \ bz2 \ pcntl \ mbstring \ @@ -123,24 +91,18 @@ RUN apt-get update; \ pdo_pgsql \ opcache \ exif \ - && docker-php-ext-configure pdo_mysql && docker-php-ext-install pdo_mysql \ - && docker-php-ext-configure zip && docker-php-ext-install zip \ - && docker-php-ext-configure intl && docker-php-ext-install intl \ - && docker-php-ext-configure gd \ - --prefix=/usr \ - --with-jpeg \ - --with-webp \ - --with-freetype && docker-php-ext-install gd \ - && pecl -q install -o -f redis && docker-php-ext-enable redis \ - && pecl -q install -o -f rdkafka && docker-php-ext-enable rdkafka \ - && pecl -q install -o -f memcached && docker-php-ext-enable memcached \ - && pecl -q install -o -f igbinary && docker-php-ext-enable igbinary \ - && docker-php-ext-configure ldap --with-libdir=lib/$(gcc -dumpmachine) && docker-php-ext-install ldap \ + pdo_mysql \ + zip \ + intl \ + gd \ + redis \ + rdkafka \ + memcached \ + igbinary \ + ldap \ && apt-get -y autoremove \ && apt-get clean \ && docker-php-source delete \ - && pecl clear-cache \ - && rm -R /tmp/pear \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ && rm /var/log/lastlog /var/log/faillog @@ -151,17 +113,16 @@ RUN wget -q "https://github.com/aptible/supercronic/releases/download/v0.2.29/su && echo "*/1 * * * * php ${ROOT}/artisan schedule:run --verbose --no-interaction" > /etc/supercronic/laravel RUN userdel --remove --force www-data \ - && groupadd --force -g ${WWWGROUP} ${NON_ROOT_USER} \ - && useradd -ms /bin/bash --no-log-init --no-user-group -g ${WWWGROUP} -u ${WWWUSER} ${NON_ROOT_USER} - -RUN chown -R ${NON_ROOT_USER}:${NON_ROOT_USER} ${ROOT} /var/{log,run} + && groupadd --force -g ${WWWGROUP} ${USER} \ + && useradd -ms /bin/bash --no-log-init --no-user-group -g ${WWWGROUP} -u ${WWWUSER} ${USER} -RUN chmod -R a+rw /var/{log,run} +RUN chown -R ${USER}:${USER} ${ROOT} /var/{log,run} \ + && chmod -R a+rw /var/{log,run} -USER ${NON_ROOT_USER} +USER ${USER} -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} --from=vendor /usr/bin/composer /usr/bin/composer -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} composer* ./ +COPY --chown=${USER}:${USER} --from=vendor /usr/bin/composer /usr/bin/composer +COPY --chown=${USER}:${USER} composer.json composer.lock ./ RUN composer install \ --no-dev \ @@ -171,18 +132,19 @@ RUN composer install \ --no-scripts \ --audit -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} . . -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} --from=build ${ROOT}/public public +COPY --chown=${USER}:${USER} . . +COPY --chown=${USER}:${USER} --from=build ${ROOT}/public public RUN mkdir -p \ storage/framework/{sessions,views,cache,testing} \ storage/logs \ - bootstrap/cache + bootstrap/cache && chmod -R a+rw storage -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} deployment/octane/FrankenPHP/supervisord.frankenphp.conf /etc/supervisor/conf.d/ -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} deployment/supervisord.*.conf /etc/supervisor/conf.d/ -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} deployment/start-container /usr/local/bin/start-container -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} deployment/php.ini /usr/local/etc/php/conf.d/99-octane.ini +COPY --chown=${USER}:${USER} deployment/octane/FrankenPHP/supervisord.frankenphp.conf /etc/supervisor/conf.d/ +COPY --chown=${USER}:${USER} deployment/supervisord.*.conf /etc/supervisor/conf.d/ +COPY --chown=${USER}:${USER} deployment/start-container /usr/local/bin/start-container +COPY --chown=${USER}:${USER} deployment/php.ini ${PHP_INI_DIR}/conf.d/99-octane.ini +COPY --chown=${USER}:${USER} ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini RUN composer install \ --classmap-authoritative \ @@ -192,7 +154,7 @@ RUN composer install \ && composer clear-cache \ && php artisan storage:link -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} --from=server /usr/local/bin/frankenphp ./frankenphp +COPY --chown=${USER}:${USER} --from=server /usr/local/bin/frankenphp ./frankenphp RUN chmod +x /usr/local/bin/start-container frankenphp diff --git a/RoadRunner.Dockerfile b/RoadRunner.Dockerfile index b84454b..93ce236 100644 --- a/RoadRunner.Dockerfile +++ b/RoadRunner.Dockerfile @@ -37,6 +37,10 @@ FROM composer:${COMPOSER_VERSION} AS vendor FROM php:${PHP_VERSION}-cli-bookworm LABEL maintainer="SMortexa " +LABEL org.opencontainers.image.title="Laravel Octane Dockerfile" +LABEL org.opencontainers.image.description="Production-ready Dockerfile for Laravel Octane" +LABEL org.opencontainers.image.source=https://github.com/exaco/laravel-octane-dockerfile +LABEL org.opencontainers.image.licenses=MIT ARG WWWUSER=1000 ARG WWWGROUP=1000 @@ -47,8 +51,10 @@ ENV DEBIAN_FRONTEND=noninteractive \ WITH_HORIZON=false \ WITH_SCHEDULER=false \ OCTANE_SERVER=roadrunner \ - NON_ROOT_USER=octane \ - ROOT=/var/www/html + USER=octane \ + ROOT=/var/www/html \ + COMPOSER_FUND=0 \ + COMPOSER_MAX_PARALLEL_HTTP=24 WORKDIR ${ROOT} @@ -59,57 +65,17 @@ RUN ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime \ RUN apt-get update; \ apt-get upgrade -yqq; \ - pecl -q channel-update pecl.php.net; \ apt-get install -yqq --no-install-recommends --show-progress \ apt-utils \ - gnupg \ - git \ curl \ wget \ nano \ - rsync \ ncdu \ - sqlite3 \ - libcurl4-openssl-dev \ ca-certificates \ supervisor \ - libmemcached-dev \ - libz-dev \ - libbrotli-dev \ - libpq-dev \ - libjpeg-dev \ - libpng-dev \ - librsvg2-bin \ - libfreetype6-dev \ - libssl-dev \ - libwebp-dev \ - libmcrypt-dev \ - libldap2-dev \ - libonig-dev \ - libreadline-dev \ libsodium-dev \ - libsqlite3-dev \ - libmagickwand-dev \ - libzip-dev zip unzip \ - libargon2-1 \ - libidn2-0 \ - libpcre2-8-0 \ - librdkafka-dev \ - libpcre3 \ - libxml2 \ - libxslt-dev \ - libzstd1 \ - libc-ares-dev \ - procps \ - postgresql-client \ - postgis \ - default-mysql-client \ - libbz2-dev \ - zlib1g-dev \ - libicu-dev \ - g++ \ # Install PHP extensions - && docker-php-ext-install \ + && install-php-extensions \ bz2 \ pcntl \ mbstring \ @@ -119,24 +85,18 @@ RUN apt-get update; \ pdo_pgsql \ opcache \ exif \ - && docker-php-ext-configure pdo_mysql && docker-php-ext-install pdo_mysql \ - && docker-php-ext-configure zip && docker-php-ext-install zip \ - && docker-php-ext-configure intl && docker-php-ext-install intl \ - && docker-php-ext-configure gd \ - --prefix=/usr \ - --with-jpeg \ - --with-webp \ - --with-freetype && docker-php-ext-install gd \ - && pecl -q install -o -f redis && docker-php-ext-enable redis \ - && pecl -q install -o -f rdkafka && docker-php-ext-enable rdkafka \ - && pecl -q install -o -f memcached && docker-php-ext-enable memcached \ - && pecl -q install -o -f igbinary && docker-php-ext-enable igbinary \ - && docker-php-ext-configure ldap --with-libdir=lib/$(gcc -dumpmachine) && docker-php-ext-install ldap \ + pdo_mysql \ + zip \ + intl \ + gd \ + redis \ + rdkafka \ + memcached \ + igbinary \ + ldap \ && apt-get -y autoremove \ && apt-get clean \ && docker-php-source delete \ - && pecl clear-cache \ - && rm -R /tmp/pear \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ && rm /var/log/lastlog /var/log/faillog @@ -147,17 +107,16 @@ RUN wget -q "https://github.com/aptible/supercronic/releases/download/v0.2.29/su && echo "*/1 * * * * php ${ROOT}/artisan schedule:run --verbose --no-interaction" > /etc/supercronic/laravel RUN userdel --remove --force www-data \ - && groupadd --force -g ${WWWGROUP} ${NON_ROOT_USER} \ - && useradd -ms /bin/bash --no-log-init --no-user-group -g ${WWWGROUP} -u ${WWWUSER} ${NON_ROOT_USER} + && groupadd --force -g ${WWWGROUP} ${USER} \ + && useradd -ms /bin/bash --no-log-init --no-user-group -g ${WWWGROUP} -u ${WWWUSER} ${USER} -RUN chown -R ${NON_ROOT_USER}:${NON_ROOT_USER} ${ROOT} /var/{log,run} +RUN chown -R ${USER}:${USER} ${ROOT} /var/{log,run} \ + && chmod -R a+rw /var/{log,run} -RUN chmod -R a+rw /var/{log,run} +USER ${USER} -USER ${NON_ROOT_USER} - -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} --from=vendor /usr/bin/composer /usr/bin/composer -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} composer* ./ +COPY --chown=${USER}:${USER} --from=vendor /usr/bin/composer /usr/bin/composer +COPY --chown=${USER}:${USER} composer.json composer.lock ./ RUN composer install \ --no-dev \ @@ -167,19 +126,20 @@ RUN composer install \ --no-scripts \ --audit -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} . . -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} --from=build ${ROOT}/public public +COPY --chown=${USER}:${USER} . . +COPY --chown=${USER}:${USER} --from=build ${ROOT}/public public RUN mkdir -p \ storage/framework/{sessions,views,cache,testing} \ storage/logs \ - bootstrap/cache - -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} deployment/octane/RoadRunner/supervisord.roadrunner.conf /etc/supervisor/conf.d -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} deployment/supervisord.*.conf /etc/supervisor/conf.d/ -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} deployment/php.ini /usr/local/etc/php/conf.d/99-octane.ini -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} deployment/octane/RoadRunner/.rr.prod.yaml ./.rr.yaml -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} deployment/start-container /usr/local/bin/start-container + bootstrap/cache && chmod -R a+rw storage + +COPY --chown=${USER}:${USER} deployment/octane/RoadRunner/supervisord.roadrunner.conf /etc/supervisor/conf.d +COPY --chown=${USER}:${USER} deployment/supervisord.*.conf /etc/supervisor/conf.d/ +COPY --chown=${USER}:${USER} deployment/php.ini ${PHP_INI_DIR}/conf.d/99-octane.ini +COPY --chown=${USER}:${USER} deployment/octane/RoadRunner/.rr.prod.yaml ./.rr.yaml +COPY --chown=${USER}:${USER} deployment/start-container /usr/local/bin/start-container +COPY --chown=${USER}:${USER} ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini RUN composer install \ --classmap-authoritative \ diff --git a/Swoole.Dockerfile b/Swoole.Dockerfile index c52f7ce..c1097e1 100644 --- a/Swoole.Dockerfile +++ b/Swoole.Dockerfile @@ -37,6 +37,10 @@ FROM composer:${COMPOSER_VERSION} AS vendor FROM php:${PHP_VERSION}-cli-bookworm LABEL maintainer="SMortexa " +LABEL org.opencontainers.image.title="Laravel Octane Dockerfile" +LABEL org.opencontainers.image.description="Production-ready Dockerfile for Laravel Octane" +LABEL org.opencontainers.image.source=https://github.com/exaco/laravel-octane-dockerfile +LABEL org.opencontainers.image.licenses=MIT ARG WWWUSER=1000 ARG WWWGROUP=1000 @@ -47,8 +51,10 @@ ENV DEBIAN_FRONTEND=noninteractive \ WITH_HORIZON=false \ WITH_SCHEDULER=false \ OCTANE_SERVER=swoole \ - NON_ROOT_USER=octane \ - ROOT=/var/www/html + USER=octane \ + ROOT=/var/www/html \ + COMPOSER_FUND=0 \ + COMPOSER_MAX_PARALLEL_HTTP=24 WORKDIR ${ROOT} @@ -59,57 +65,17 @@ RUN ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime \ RUN apt-get update; \ apt-get upgrade -yqq; \ - pecl -q channel-update pecl.php.net; \ apt-get install -yqq --no-install-recommends --show-progress \ apt-utils \ - gnupg \ - git \ curl \ wget \ nano \ - rsync \ ncdu \ - sqlite3 \ - libcurl4-openssl-dev \ ca-certificates \ supervisor \ - libmemcached-dev \ - libz-dev \ - libbrotli-dev \ - libpq-dev \ - libjpeg-dev \ - libpng-dev \ - librsvg2-bin \ - libfreetype6-dev \ - libssl-dev \ - libwebp-dev \ - libmcrypt-dev \ - libldap2-dev \ - libonig-dev \ - libreadline-dev \ libsodium-dev \ - libsqlite3-dev \ - libmagickwand-dev \ - libzip-dev zip unzip \ - libargon2-1 \ - libidn2-0 \ - libpcre2-8-0 \ - librdkafka-dev \ - libpcre3 \ - libxml2 \ - libxslt-dev \ - libzstd1 \ - libc-ares-dev \ - procps \ - postgresql-client \ - postgis \ - default-mysql-client \ - libbz2-dev \ - zlib1g-dev \ - libicu-dev \ - g++ \ # Install PHP extensions - && docker-php-ext-install \ + && install-php-extensions \ bz2 \ pcntl \ mbstring \ @@ -119,25 +85,19 @@ RUN apt-get update; \ pdo_pgsql \ opcache \ exif \ - && docker-php-ext-configure pdo_mysql && docker-php-ext-install pdo_mysql \ - && docker-php-ext-configure zip && docker-php-ext-install zip \ - && docker-php-ext-configure intl && docker-php-ext-install intl \ - && docker-php-ext-configure gd \ - --prefix=/usr \ - --with-jpeg \ - --with-webp \ - --with-freetype && docker-php-ext-install gd \ - && pecl -q install -o -f redis && docker-php-ext-enable redis \ - && pecl -q install -o -f rdkafka && docker-php-ext-enable rdkafka \ - && pecl -q install -o -f memcached && docker-php-ext-enable memcached \ - && pecl -q install -o -f igbinary && docker-php-ext-enable igbinary \ - && pecl -q install -o -f swoole && docker-php-ext-enable swoole \ - && docker-php-ext-configure ldap --with-libdir=lib/$(gcc -dumpmachine) && docker-php-ext-install ldap \ + pdo_mysql \ + zip \ + intl \ + gd \ + redis \ + rdkafka \ + memcached \ + igbinary \ + ldap \ + swoole \ && apt-get -y autoremove \ && apt-get clean \ && docker-php-source delete \ - && pecl clear-cache \ - && rm -R /tmp/pear \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ && rm /var/log/lastlog /var/log/faillog @@ -148,17 +108,16 @@ RUN wget -q "https://github.com/aptible/supercronic/releases/download/v0.2.29/su && echo "*/1 * * * * php ${ROOT}/artisan schedule:run --verbose --no-interaction" > /etc/supercronic/laravel RUN userdel --remove --force www-data \ - && groupadd --force -g ${WWWGROUP} ${NON_ROOT_USER} \ - && useradd -ms /bin/bash --no-log-init --no-user-group -g ${WWWGROUP} -u ${WWWUSER} ${NON_ROOT_USER} + && groupadd --force -g ${WWWGROUP} ${USER} \ + && useradd -ms /bin/bash --no-log-init --no-user-group -g ${WWWGROUP} -u ${WWWUSER} ${USER} -RUN chown -R ${NON_ROOT_USER}:${NON_ROOT_USER} ${ROOT} /var/{log,run} +RUN chown -R ${USER}:${USER} ${ROOT} /var/{log,run} \ + && chmod -R a+rw /var/{log,run} -RUN chmod -R a+rw /var/{log,run} +USER ${USER} -USER ${NON_ROOT_USER} - -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} --from=vendor /usr/bin/composer /usr/bin/composer -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} composer* ./ +COPY --chown=${USER}:${USER} --from=vendor /usr/bin/composer /usr/bin/composer +COPY --chown=${USER}:${USER} composer.json composer.lock ./ RUN composer install \ --no-dev \ @@ -168,18 +127,19 @@ RUN composer install \ --no-scripts \ --audit -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} . . -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} --from=build ${ROOT}/public public +COPY --chown=${USER}:${USER} . . +COPY --chown=${USER}:${USER} --from=build ${ROOT}/public public RUN mkdir -p \ storage/framework/{sessions,views,cache,testing} \ storage/logs \ - bootstrap/cache + bootstrap/cache && chmod -R a+rw storage -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} deployment/octane/Swoole/supervisord.swoole.conf /etc/supervisor/conf.d/ -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} deployment/supervisord.*.conf /etc/supervisor/conf.d/ -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} deployment/php.ini /usr/local/etc/php/conf.d/99-octane.ini -COPY --chown=${NON_ROOT_USER}:${NON_ROOT_USER} deployment/start-container /usr/local/bin/start-container +COPY --chown=${USER}:${USER} deployment/octane/Swoole/supervisord.swoole.conf /etc/supervisor/conf.d/ +COPY --chown=${USER}:${USER} deployment/supervisord.*.conf /etc/supervisor/conf.d/ +COPY --chown=${USER}:${USER} deployment/php.ini ${PHP_INI_DIR}/conf.d/99-octane.ini +COPY --chown=${USER}:${USER} deployment/start-container /usr/local/bin/start-container +COPY --chown=${USER}:${USER} ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini RUN composer install \ --classmap-authoritative \ diff --git a/deployment/octane/FrankenPHP/supervisord.frankenphp.conf b/deployment/octane/FrankenPHP/supervisord.frankenphp.conf index 24ce332..e582505 100644 --- a/deployment/octane/FrankenPHP/supervisord.frankenphp.conf +++ b/deployment/octane/FrankenPHP/supervisord.frankenphp.conf @@ -1,13 +1,13 @@ [supervisord] nodaemon=true -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s logfile=/var/log/supervisor/supervisord.log pidfile=/var/run/supervisord.pid [program:octane] process_name=%(program_name)s_%(process_num)02d command=php %(ENV_ROOT)s/artisan octane:start --server=frankenphp --host=0.0.0.0 --port=80 --admin-port=2019 -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s autostart=true autorestart=true environment=LARAVEL_OCTANE="1" @@ -19,7 +19,7 @@ stderr_logfile_maxbytes=0 [program:horizon] process_name=%(program_name)s_%(process_num)02d command=php %(ENV_ROOT)s/artisan horizon -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s autostart=%(ENV_WITH_HORIZON)s autorestart=true stdout_logfile=%(ENV_ROOT)s/horizon.log @@ -28,7 +28,7 @@ stopwaitsecs=3600 [program:scheduler] process_name=%(program_name)s_%(process_num)02d command=supercronic -overlapping /etc/supercronic/laravel -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s autostart=%(ENV_WITH_SCHEDULER)s autorestart=true stdout_logfile=%(ENV_ROOT)s/scheduler.log @@ -36,7 +36,7 @@ stdout_logfile=%(ENV_ROOT)s/scheduler.log [program:clear-scheduler-cache] process_name=%(program_name)s_%(process_num)02d command=php %(ENV_ROOT)s/artisan schedule:clear-cache -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s autostart=%(ENV_WITH_SCHEDULER)s autorestart=false stdout_logfile=%(ENV_ROOT)s/scheduler.log \ No newline at end of file diff --git a/deployment/octane/RoadRunner/supervisord.roadrunner.conf b/deployment/octane/RoadRunner/supervisord.roadrunner.conf index 7856a42..d47e6b2 100644 --- a/deployment/octane/RoadRunner/supervisord.roadrunner.conf +++ b/deployment/octane/RoadRunner/supervisord.roadrunner.conf @@ -1,13 +1,13 @@ [supervisord] nodaemon=true -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s logfile=/var/log/supervisor/supervisord.log pidfile=/var/run/supervisord.pid [program:octane] process_name=%(program_name)s_%(process_num)02d command=php %(ENV_ROOT)s/artisan octane:start --server=roadrunner --host=0.0.0.0 --port=80 --rpc-port=6001 --rr-config=%(ENV_ROOT)s/.rr.yaml -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s autostart=true autorestart=true environment=LARAVEL_OCTANE="1" @@ -19,7 +19,7 @@ stderr_logfile_maxbytes=0 [program:horizon] process_name=%(program_name)s_%(process_num)02d command=php %(ENV_ROOT)s/artisan horizon -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s autostart=%(ENV_WITH_HORIZON)s autorestart=true stdout_logfile=%(ENV_ROOT)s/horizon.log @@ -28,7 +28,7 @@ stopwaitsecs=3600 [program:scheduler] process_name=%(program_name)s_%(process_num)02d command=supercronic -overlapping /etc/supercronic/laravel -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s autostart=%(ENV_WITH_SCHEDULER)s autorestart=true stdout_logfile=%(ENV_ROOT)s/scheduler.log @@ -36,7 +36,7 @@ stdout_logfile=%(ENV_ROOT)s/scheduler.log [program:clear-scheduler-cache] process_name=%(program_name)s_%(process_num)02d command=php %(ENV_ROOT)s/artisan schedule:clear-cache -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s autostart=%(ENV_WITH_SCHEDULER)s autorestart=false stdout_logfile=%(ENV_ROOT)s/scheduler.log \ No newline at end of file diff --git a/deployment/octane/Swoole/supervisord.swoole.conf b/deployment/octane/Swoole/supervisord.swoole.conf index 376cd4f..15db3ac 100644 --- a/deployment/octane/Swoole/supervisord.swoole.conf +++ b/deployment/octane/Swoole/supervisord.swoole.conf @@ -1,13 +1,13 @@ [supervisord] nodaemon=true -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s logfile=/var/log/supervisor/supervisord.log pidfile=/var/run/supervisord.pid [program:octane] process_name=%(program_name)s_%(process_num)02d command=php %(ENV_ROOT)s/artisan octane:start --server=swoole --host=0.0.0.0 --port=80 -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s autostart=true autorestart=true environment=LARAVEL_OCTANE="1" @@ -19,7 +19,7 @@ stderr_logfile_maxbytes=0 [program:horizon] process_name=%(program_name)s_%(process_num)02d command=php %(ENV_ROOT)s/artisan horizon -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s autostart=%(ENV_WITH_HORIZON)s autorestart=true stdout_logfile=%(ENV_ROOT)s/horizon.log @@ -28,7 +28,7 @@ stopwaitsecs=3600 [program:scheduler] process_name=%(program_name)s_%(process_num)02d command=supercronic -overlapping /etc/supercronic/laravel -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s autostart=%(ENV_WITH_SCHEDULER)s autorestart=true stdout_logfile=%(ENV_ROOT)s/scheduler.log @@ -36,7 +36,7 @@ stdout_logfile=%(ENV_ROOT)s/scheduler.log [program:clear-scheduler-cache] process_name=%(program_name)s_%(process_num)02d command=php %(ENV_ROOT)s/artisan schedule:clear-cache -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s autostart=%(ENV_WITH_SCHEDULER)s autorestart=false stdout_logfile=%(ENV_ROOT)s/scheduler.log \ No newline at end of file diff --git a/deployment/supervisord.horizon.conf b/deployment/supervisord.horizon.conf index 3e39fef..6d03393 100644 --- a/deployment/supervisord.horizon.conf +++ b/deployment/supervisord.horizon.conf @@ -1,13 +1,13 @@ [supervisord] nodaemon=true -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s logfile=/var/log/supervisor/supervisord.log pidfile=/var/run/supervisord.pid [program:horizon] process_name=%(program_name)s_%(process_num)02d command=php %(ENV_ROOT)s/artisan horizon -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s autostart=true autorestart=true stdout_logfile=/dev/stdout diff --git a/deployment/supervisord.scheduler.conf b/deployment/supervisord.scheduler.conf index 2edf576..55c3d74 100644 --- a/deployment/supervisord.scheduler.conf +++ b/deployment/supervisord.scheduler.conf @@ -1,13 +1,13 @@ [supervisord] nodaemon=true -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s logfile=/var/log/supervisor/supervisord.log pidfile=/var/run/supervisord.pid [program:scheduler] process_name=%(program_name)s_%(process_num)02d command=supercronic -overlapping /etc/supercronic/laravel -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s autostart=%(ENV_WITH_SCHEDULER)s autorestart=true stdout_logfile=/dev/stdout @@ -18,7 +18,7 @@ stderr_logfile_maxbytes=0 [program:clear-scheduler-cache] process_name=%(program_name)s_%(process_num)02d command=php %(ENV_ROOT)s/artisan schedule:clear-cache -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s autostart=%(ENV_WITH_SCHEDULER)s autorestart=false stdout_logfile=/dev/stdout diff --git a/deployment/supervisord.worker.conf b/deployment/supervisord.worker.conf index c7ca7b7..efd760d 100644 --- a/deployment/supervisord.worker.conf +++ b/deployment/supervisord.worker.conf @@ -1,13 +1,13 @@ [supervisord] nodaemon=true -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s logfile=/var/log/supervisor/supervisord.log pidfile=/var/run/supervisord.pid [program:worker] process_name=%(program_name)s_%(process_num)02d command=%(ENV_WORKER_COMMAND)s -user=%(ENV_NON_ROOT_USER)s +user=%(ENV_USER)s autostart=true autorestart=true stdout_logfile=/dev/stdout diff --git a/deployment/utilities.sh b/deployment/utilities.sh index 7ca35a7..cdaf283 100644 --- a/deployment/utilities.sh +++ b/deployment/utilities.sh @@ -6,20 +6,6 @@ tinker() { fi } -# Determine size of a file or total size of a directory -fs() { - if du -b /dev/null >/dev/null 2>&1; then - local arg=-sbh - else - local arg=-sh - fi - if [[ -n "$@" ]]; then - du $arg -- "$@" - else - du $arg .[^.]* ./* - fi -} - # Commonly used aliases alias ..="cd .." alias ...="cd ../.." From 12afdbb0f78e47b4da7e16401d5dd9bcfa01ce74 Mon Sep 17 00:00:00 2001 From: smortexa Date: Fri, 16 Feb 2024 01:54:50 +0330 Subject: [PATCH 2/5] wip --- FrankenPHP.Dockerfile | 6 +++--- RoadRunner.Dockerfile | 6 +++--- Swoole.Dockerfile | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/FrankenPHP.Dockerfile b/FrankenPHP.Dockerfile index e88772b..e47933c 100644 --- a/FrankenPHP.Dockerfile +++ b/FrankenPHP.Dockerfile @@ -11,7 +11,7 @@ ARG COMPOSER_VERSION=latest ARG NODE_VERSION=20-alpine -FROM node:${NODE_VERSION} as build +FROM node:${NODE_VERSION} AS build ENV ROOT=/var/www/html @@ -38,7 +38,7 @@ FROM composer:${COMPOSER_VERSION} AS vendor FROM dunglas/frankenphp:${FRANKENPHP_VERSION} AS server -FROM php:${PHP_VERSION}-zts-bookworm +FROM php:${PHP_VERSION}-zts-bookworm AS base LABEL maintainer="SMortexa " LABEL org.opencontainers.image.title="Laravel Octane Dockerfile" @@ -144,7 +144,7 @@ COPY --chown=${USER}:${USER} deployment/octane/FrankenPHP/supervisord.frankenphp COPY --chown=${USER}:${USER} deployment/supervisord.*.conf /etc/supervisor/conf.d/ COPY --chown=${USER}:${USER} deployment/start-container /usr/local/bin/start-container COPY --chown=${USER}:${USER} deployment/php.ini ${PHP_INI_DIR}/conf.d/99-octane.ini -COPY --chown=${USER}:${USER} ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini +COPY --chown=${USER}:${USER} --from=base ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini RUN composer install \ --classmap-authoritative \ diff --git a/RoadRunner.Dockerfile b/RoadRunner.Dockerfile index 93ce236..248f732 100644 --- a/RoadRunner.Dockerfile +++ b/RoadRunner.Dockerfile @@ -9,7 +9,7 @@ ARG COMPOSER_VERSION=latest ARG NODE_VERSION=20-alpine -FROM node:${NODE_VERSION} as build +FROM node:${NODE_VERSION} AS build ENV ROOT=/var/www/html @@ -34,7 +34,7 @@ RUN npm run build FROM composer:${COMPOSER_VERSION} AS vendor -FROM php:${PHP_VERSION}-cli-bookworm +FROM php:${PHP_VERSION}-cli-bookworm AS base LABEL maintainer="SMortexa " LABEL org.opencontainers.image.title="Laravel Octane Dockerfile" @@ -139,7 +139,7 @@ COPY --chown=${USER}:${USER} deployment/supervisord.*.conf /etc/supervisor/conf. COPY --chown=${USER}:${USER} deployment/php.ini ${PHP_INI_DIR}/conf.d/99-octane.ini COPY --chown=${USER}:${USER} deployment/octane/RoadRunner/.rr.prod.yaml ./.rr.yaml COPY --chown=${USER}:${USER} deployment/start-container /usr/local/bin/start-container -COPY --chown=${USER}:${USER} ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini +COPY --chown=${USER}:${USER} --from=base ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini RUN composer install \ --classmap-authoritative \ diff --git a/Swoole.Dockerfile b/Swoole.Dockerfile index c1097e1..daa7819 100644 --- a/Swoole.Dockerfile +++ b/Swoole.Dockerfile @@ -9,7 +9,7 @@ ARG COMPOSER_VERSION=latest ARG NODE_VERSION=20-alpine -FROM node:${NODE_VERSION} as build +FROM node:${NODE_VERSION} AS build ENV ROOT=/var/www/html @@ -34,7 +34,7 @@ RUN npm run build FROM composer:${COMPOSER_VERSION} AS vendor -FROM php:${PHP_VERSION}-cli-bookworm +FROM php:${PHP_VERSION}-cli-bookworm AS base LABEL maintainer="SMortexa " LABEL org.opencontainers.image.title="Laravel Octane Dockerfile" @@ -139,7 +139,7 @@ COPY --chown=${USER}:${USER} deployment/octane/Swoole/supervisord.swoole.conf /e COPY --chown=${USER}:${USER} deployment/supervisord.*.conf /etc/supervisor/conf.d/ COPY --chown=${USER}:${USER} deployment/php.ini ${PHP_INI_DIR}/conf.d/99-octane.ini COPY --chown=${USER}:${USER} deployment/start-container /usr/local/bin/start-container -COPY --chown=${USER}:${USER} ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini +COPY --chown=${USER}:${USER} --from=base ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini RUN composer install \ --classmap-authoritative \ From f800c7484ff445013d09b7fa4028adf99b61279b Mon Sep 17 00:00:00 2001 From: smortexa Date: Fri, 16 Feb 2024 01:59:31 +0330 Subject: [PATCH 3/5] wip --- FrankenPHP.Dockerfile | 3 ++- RoadRunner.Dockerfile | 3 ++- Swoole.Dockerfile | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/FrankenPHP.Dockerfile b/FrankenPHP.Dockerfile index e47933c..0e86be2 100644 --- a/FrankenPHP.Dockerfile +++ b/FrankenPHP.Dockerfile @@ -144,7 +144,8 @@ COPY --chown=${USER}:${USER} deployment/octane/FrankenPHP/supervisord.frankenphp COPY --chown=${USER}:${USER} deployment/supervisord.*.conf /etc/supervisor/conf.d/ COPY --chown=${USER}:${USER} deployment/start-container /usr/local/bin/start-container COPY --chown=${USER}:${USER} deployment/php.ini ${PHP_INI_DIR}/conf.d/99-octane.ini -COPY --chown=${USER}:${USER} --from=base ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini + +RUN cp ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini RUN composer install \ --classmap-authoritative \ diff --git a/RoadRunner.Dockerfile b/RoadRunner.Dockerfile index 248f732..4adaa27 100644 --- a/RoadRunner.Dockerfile +++ b/RoadRunner.Dockerfile @@ -139,7 +139,8 @@ COPY --chown=${USER}:${USER} deployment/supervisord.*.conf /etc/supervisor/conf. COPY --chown=${USER}:${USER} deployment/php.ini ${PHP_INI_DIR}/conf.d/99-octane.ini COPY --chown=${USER}:${USER} deployment/octane/RoadRunner/.rr.prod.yaml ./.rr.yaml COPY --chown=${USER}:${USER} deployment/start-container /usr/local/bin/start-container -COPY --chown=${USER}:${USER} --from=base ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini + +RUN cp ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini RUN composer install \ --classmap-authoritative \ diff --git a/Swoole.Dockerfile b/Swoole.Dockerfile index daa7819..455d0fd 100644 --- a/Swoole.Dockerfile +++ b/Swoole.Dockerfile @@ -139,7 +139,8 @@ COPY --chown=${USER}:${USER} deployment/octane/Swoole/supervisord.swoole.conf /e COPY --chown=${USER}:${USER} deployment/supervisord.*.conf /etc/supervisor/conf.d/ COPY --chown=${USER}:${USER} deployment/php.ini ${PHP_INI_DIR}/conf.d/99-octane.ini COPY --chown=${USER}:${USER} deployment/start-container /usr/local/bin/start-container -COPY --chown=${USER}:${USER} --from=base ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini + +RUN cp ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini RUN composer install \ --classmap-authoritative \ From 081df42a624b97c934b00fae39ab96e66d04229f Mon Sep 17 00:00:00 2001 From: smortexa Date: Fri, 16 Feb 2024 02:02:25 +0330 Subject: [PATCH 4/5] wip --- RoadRunner.Dockerfile | 2 ++ Swoole.Dockerfile | 2 ++ 2 files changed, 4 insertions(+) diff --git a/RoadRunner.Dockerfile b/RoadRunner.Dockerfile index 4adaa27..a84a640 100644 --- a/RoadRunner.Dockerfile +++ b/RoadRunner.Dockerfile @@ -63,6 +63,8 @@ SHELL ["/bin/bash", "-eou", "pipefail", "-c"] RUN ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime \ && echo ${TZ} > /etc/timezone +ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/ + RUN apt-get update; \ apt-get upgrade -yqq; \ apt-get install -yqq --no-install-recommends --show-progress \ diff --git a/Swoole.Dockerfile b/Swoole.Dockerfile index 455d0fd..447108f 100644 --- a/Swoole.Dockerfile +++ b/Swoole.Dockerfile @@ -63,6 +63,8 @@ SHELL ["/bin/bash", "-eou", "pipefail", "-c"] RUN ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime \ && echo ${TZ} > /etc/timezone +ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/ + RUN apt-get update; \ apt-get upgrade -yqq; \ apt-get install -yqq --no-install-recommends --show-progress \ From a3496db0b9b3d116ae656604ee7a607b518fd7fd Mon Sep 17 00:00:00 2001 From: smortexa Date: Fri, 16 Feb 2024 02:07:31 +0330 Subject: [PATCH 5/5] wip --- FrankenPHP.Dockerfile | 4 ++-- RoadRunner.Dockerfile | 4 ++-- Swoole.Dockerfile | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/FrankenPHP.Dockerfile b/FrankenPHP.Dockerfile index 0e86be2..1c8dd75 100644 --- a/FrankenPHP.Dockerfile +++ b/FrankenPHP.Dockerfile @@ -119,6 +119,8 @@ RUN userdel --remove --force www-data \ RUN chown -R ${USER}:${USER} ${ROOT} /var/{log,run} \ && chmod -R a+rw /var/{log,run} +RUN cp ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini + USER ${USER} COPY --chown=${USER}:${USER} --from=vendor /usr/bin/composer /usr/bin/composer @@ -145,8 +147,6 @@ COPY --chown=${USER}:${USER} deployment/supervisord.*.conf /etc/supervisor/conf. COPY --chown=${USER}:${USER} deployment/start-container /usr/local/bin/start-container COPY --chown=${USER}:${USER} deployment/php.ini ${PHP_INI_DIR}/conf.d/99-octane.ini -RUN cp ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini - RUN composer install \ --classmap-authoritative \ --no-interaction \ diff --git a/RoadRunner.Dockerfile b/RoadRunner.Dockerfile index a84a640..8e823ac 100644 --- a/RoadRunner.Dockerfile +++ b/RoadRunner.Dockerfile @@ -115,6 +115,8 @@ RUN userdel --remove --force www-data \ RUN chown -R ${USER}:${USER} ${ROOT} /var/{log,run} \ && chmod -R a+rw /var/{log,run} +RUN cp ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini + USER ${USER} COPY --chown=${USER}:${USER} --from=vendor /usr/bin/composer /usr/bin/composer @@ -142,8 +144,6 @@ COPY --chown=${USER}:${USER} deployment/php.ini ${PHP_INI_DIR}/conf.d/99-octane. COPY --chown=${USER}:${USER} deployment/octane/RoadRunner/.rr.prod.yaml ./.rr.yaml COPY --chown=${USER}:${USER} deployment/start-container /usr/local/bin/start-container -RUN cp ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini - RUN composer install \ --classmap-authoritative \ --no-interaction \ diff --git a/Swoole.Dockerfile b/Swoole.Dockerfile index 447108f..92ac107 100644 --- a/Swoole.Dockerfile +++ b/Swoole.Dockerfile @@ -116,6 +116,8 @@ RUN userdel --remove --force www-data \ RUN chown -R ${USER}:${USER} ${ROOT} /var/{log,run} \ && chmod -R a+rw /var/{log,run} +RUN cp ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini + USER ${USER} COPY --chown=${USER}:${USER} --from=vendor /usr/bin/composer /usr/bin/composer @@ -142,8 +144,6 @@ COPY --chown=${USER}:${USER} deployment/supervisord.*.conf /etc/supervisor/conf. COPY --chown=${USER}:${USER} deployment/php.ini ${PHP_INI_DIR}/conf.d/99-octane.ini COPY --chown=${USER}:${USER} deployment/start-container /usr/local/bin/start-container -RUN cp ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini - RUN composer install \ --classmap-authoritative \ --no-interaction \