1- ARG  PHP_VERSION=8.4.12 
2- ARG  FRANKENPHP_VERSION=1.9.1 
1+ ARG  PHP_VERSION=8.4
2+ ARG  FRANKENPHP_VERSION=1.9
33ARG  COMPOSER_VERSION=2.8
4- ARG  BUN_VERSION="latest" 
5- ARG  ROOT="/var/www/html" 
64
75FROM  composer:${COMPOSER_VERSION} AS vendor
86
@@ -21,32 +19,33 @@ RUN CGO_ENABLED=1 \
2119        --with github.com/dunglas/frankenphp/caddy=./caddy/ \
2220        --with github.com/dunglas/caddy-cbrotli
2321
24- FROM  dunglas/frankenphp:${FRANKENPHP_VERSION}-php${PHP_VERSION}-alpine AS base 
22+ FROM  dunglas/frankenphp:${FRANKENPHP_VERSION}-php${PHP_VERSION}-alpine
2523
2624COPY  --from=upstream /usr/local/bin/frankenphp /usr/local/bin/frankenphp
2725
28- LABEL  maintainer=
"SMortexa  <[email protected] >" 29- LABEL  org.opencontainers.image.title="Laravel Octane Dockerfile " 
30- LABEL  org.opencontainers.image.description="Production-ready Dockerfile  for Laravel Octane " 
31- LABEL  org.opencontainers.image.source=https://github.com/exaco/laravel-octane-dockerfile 
26+ LABEL  maintainer=
"Mortexa  <[email protected] >" 27+ LABEL  org.opencontainers.image.title="Laravel Docker Setup " 
28+ LABEL  org.opencontainers.image.description="Production-ready Docker Setup  for Laravel" 
29+ LABEL  org.opencontainers.image.source=https://github.com/exaco/laravel-docktane 
3230LABEL  org.opencontainers.image.licenses=MIT
3331
3432ARG  USER_ID=1000
3533ARG  GROUP_ID=1000
3634ARG  TZ=UTC
37- ARG  ROOT
38- ARG  APP_ENV
3935
4036ENV  TERM=xterm-color \
4137    OCTANE_SERVER=frankenphp \
4238    TZ=${TZ} \
43-     USER=octane  \
44-     ROOT=${ROOT}  \
45-     APP_ENV=${APP_ENV}  \
39+     USER=laravel  \
40+     ROOT=/var/www/html  \
41+     APP_ENV=production  \
4642    COMPOSER_FUND=0 \
4743    COMPOSER_MAX_PARALLEL_HTTP=48 \
48-     XDG_CONFIG_HOME=${ROOT}/.config \
49-     XDG_DATA_HOME=${ROOT}/.data
44+     WITH_HORIZON=false \
45+     WITH_SCHEDULER=false \
46+     WITH_REVERB=false
47+ 
48+ ENV  XDG_CONFIG_HOME=${ROOT}/.config XDG_DATA_HOME=${ROOT}/.data
5049
5150WORKDIR  ${ROOT}
5251
@@ -66,8 +65,10 @@ RUN apk update; \
6665    procps \
6766    unzip \
6867    ca-certificates \
68+     bash \
6969    supervisor \
7070    libsodium-dev \
71+     && curl -fsSL https://bun.sh/install | BUN_INSTALL=/usr bash \
7172    && install-php-extensions \
7273    apcu \
7374    bz2 \
@@ -85,7 +86,7 @@ RUN apk update; \
8586    gd \
8687    redis \
8788    rdkafka \
88-     memcached  \
89+     ffi  \
8990    ldap \
9091    && docker-php-source delete \
9192    && rm -rf /var/cache/apk/* /tmp/* /var/tmp/*
@@ -98,80 +99,44 @@ RUN arch="$(apk --print-arch)" \
9899    x86) _cronic_fname='supercronic-linux-386'  ;; \
99100    *) echo >&2 "error: unsupported architecture: $arch" ; exit 1 ;; \
100101    esac \
101-     && wget -q "https://github.com/aptible/supercronic/releases/download/v0.2.29 /${_cronic_fname}"  \
102+     && wget -q "https://github.com/aptible/supercronic/releases/download/v0.2.38 /${_cronic_fname}"  \
102103    -O /usr/bin/supercronic \
103104    && chmod +x /usr/bin/supercronic \
104105    && mkdir -p /etc/supercronic \
105106    && echo "*/1 * * * * php ${ROOT}/artisan schedule:run --no-interaction"  > /etc/supercronic/laravel
106107
107108RUN  addgroup -g ${GROUP_ID} ${USER} \
108-     && adduser -D -G ${USER} -u ${USER_ID} -s /bin/sh ${USER} \
109-     && setcap -r /usr/local/bin/frankenphp
109+     && adduser -D -G ${USER} -u ${USER_ID} -s /bin/sh ${USER}
110110
111111RUN  mkdir -p /var/log/supervisor /var/run/supervisor \
112112    && chown -R ${USER_ID}:${GROUP_ID} ${ROOT} /var/log /var/run \
113113    && chmod -R a+rw ${ROOT} /var/log /var/run
114114
115115RUN  cp ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini
116116
117- USER  ${USER}
118- 
119- COPY  --link --chown=${USER_ID}:${GROUP_ID} --from=vendor /usr/bin/composer /usr/bin/composer
120- 
121- COPY  --link --chown=${USER_ID}:${GROUP_ID} deployment/supervisord.conf /etc/
122- COPY  --link --chown=${USER_ID}:${GROUP_ID} deployment/octane/FrankenPHP/supervisord.frankenphp.conf /etc/supervisor/conf.d/
123- COPY  --link --chown=${USER_ID}:${GROUP_ID} deployment/supervisord.*.conf /etc/supervisor/conf.d/
124- COPY  --link --chown=${USER_ID}:${GROUP_ID} deployment/start-container /usr/local/bin/start-container
125- COPY  --link --chown=${USER_ID}:${GROUP_ID} deployment/healthcheck /usr/local/bin/healthcheck
126- COPY  --link --chown=${USER_ID}:${GROUP_ID} deployment/php.ini ${PHP_INI_DIR}/conf.d/99-octane.ini
127- 
128- RUN  chmod +x /usr/local/bin/start-container /usr/local/bin/healthcheck
129- 
130- # ##########################################
131- 
132- FROM  base AS common
133- 
134- USER  ${USER}
135- 
136- COPY  --link --chown=${USER_ID}:${GROUP_ID} . .
117+ COPY  --link --from=vendor /usr/bin/composer /usr/bin/composer
118+ COPY  --link deployment/supervisord.conf /etc/
119+ COPY  --link deployment/octane/FrankenPHP/supervisord.frankenphp.conf /etc/supervisor/conf.d/
120+ COPY  --link deployment/supervisord.*.conf /etc/supervisor/conf.d/
121+ COPY  --link deployment/start-container /usr/local/bin/start-container
122+ COPY  --link deployment/healthcheck /usr/local/bin/healthcheck
123+ COPY  --link deployment/php.ini ${PHP_INI_DIR}/conf.d/99-octane.ini
124+ COPY  --link composer.* ./
137125
138126RUN  composer install \
139127    --no-dev \
140128    --no-interaction \
141129    --no-autoloader \
142130    --no-ansi \
143131    --no-scripts \
132+     --no-progress \
144133    --audit
145134
146- # ##########################################
147- #  Build frontend assets with Bun
148- # ##########################################
149- 
150- FROM  oven/bun:${BUN_VERSION} AS build
151- 
152- ARG  ROOT
153- 
154- WORKDIR  ${ROOT}
155- 
156135COPY  --link package.json bun.lock* ./
157136
158137RUN  bun install --frozen-lockfile
159138
160- COPY  --link --from=common ${ROOT} .
161- 
162- RUN  bun run build
163- 
164- # ##########################################
165- 
166- FROM  common AS runner
167- 
168- USER  ${USER}
169- 
170- ENV  WITH_HORIZON=false \
171-     WITH_SCHEDULER=false \
172-     WITH_REVERB=false
173- 
174- COPY  --link --chown=${USER_ID}:${GROUP_ID} --from=build ${ROOT}/public public
139+ COPY  --link . .
175140
176141RUN  mkdir -p \
177142    storage/framework/sessions \
@@ -181,19 +146,21 @@ RUN mkdir -p \
181146    storage/logs \
182147    bootstrap/cache \
183148    && chown -R ${USER_ID}:${GROUP_ID} ${ROOT} \
184-     && chmod -R a+rw ${ROOT} 
149+     && chmod +x /usr/local/bin/start-container /usr/local/bin/healthcheck 
185150
186151RUN  composer dump-autoload \
187152    --optimize \
188153    --apcu \
189154    --no-dev
190155
156+ RUN  bun run build
157+ 
158+ USER  ${USER}
159+ 
191160EXPOSE  8000
192- EXPOSE  443
193- EXPOSE  443/udp
194161EXPOSE  2019
195162EXPOSE  8080
196163
197164ENTRYPOINT  ["start-container" ]
198165
199- HEALTHCHECK  --start-period=5s --interval=2s  --timeout=5s  --retries=8  CMD healthcheck || exit 1
166+ HEALTHCHECK  --start-period=5s --interval=1s  --timeout=3s  --retries=10  CMD healthcheck || exit 1
0 commit comments