-
Notifications
You must be signed in to change notification settings - Fork 110
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
10 changed files
with
136 additions
and
261 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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,9 +38,13 @@ 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 <[email protected]>" | ||
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,18 @@ 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} | ||
RUN cp ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini | ||
|
||
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 +134,18 @@ 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 | ||
|
||
RUN composer install \ | ||
--classmap-authoritative \ | ||
|
@@ -192,7 +155,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 | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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,9 +34,13 @@ 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 <[email protected]>" | ||
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} | ||
|
||
|
@@ -57,59 +63,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 \ | ||
|
@@ -119,24 +87,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 +109,18 @@ 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} | ||
RUN cp ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini | ||
|
||
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 \ | ||
|
@@ -167,19 +130,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/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 | ||
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 | ||
|
||
RUN composer install \ | ||
--classmap-authoritative \ | ||
|
Oops, something went wrong.