release/v0.4.1 #66
2 changed files with 19 additions and 12 deletions
|
|
@ -39,6 +39,11 @@ jobs:
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: docker/production/Dockerfile
|
file: docker/production/Dockerfile
|
||||||
|
# arm64 is deliberate: nothing of ours deploys to it, but the image is
|
||||||
|
# published for self-hosters and dropping it would exclude ARM boxes.
|
||||||
|
# It is emulated via QEMU, so keep the Dockerfile free of compilation.
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
push: true
|
push: true
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
cache-from: type=registry,ref=forge.lvl0.xyz/lvl0/incr:buildcache
|
||||||
|
cache-to: type=registry,ref=forge.lvl0.xyz/lvl0/incr:buildcache,mode=max
|
||||||
|
|
|
||||||
|
|
@ -20,39 +20,41 @@ RUN npm run build
|
||||||
# PHP runtime stage
|
# PHP runtime stage
|
||||||
FROM php:8.3-fpm-alpine
|
FROM php:8.3-fpm-alpine
|
||||||
|
|
||||||
# Install system dependencies
|
# mysql-client backs the database readiness loop in start-app.sh.
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
git \
|
|
||||||
curl \
|
curl \
|
||||||
libpng-dev \
|
|
||||||
libxml2-dev \
|
|
||||||
zip \
|
zip \
|
||||||
unzip \
|
unzip \
|
||||||
oniguruma-dev \
|
|
||||||
mysql-client \
|
mysql-client \
|
||||||
nginx \
|
nginx \
|
||||||
supervisor
|
supervisor
|
||||||
|
|
||||||
# Install PHP extensions
|
# Prebuilt binaries rather than docker-php-ext-install: compiling these under
|
||||||
RUN docker-php-ext-install \
|
# QEMU for the arm64 image dominated the build time.
|
||||||
|
COPY --from=mlocati/php-extension-installer:2 /usr/bin/install-php-extensions /usr/local/bin/
|
||||||
|
|
||||||
|
RUN install-php-extensions \
|
||||||
pdo_mysql \
|
pdo_mysql \
|
||||||
mbstring \
|
mbstring \
|
||||||
exif \
|
|
||||||
pcntl \
|
pcntl \
|
||||||
bcmath \
|
bcmath \
|
||||||
gd
|
gd
|
||||||
|
|
||||||
# Install Composer
|
# Install Composer
|
||||||
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
|
||||||
|
|
||||||
# Set working directory
|
# Set working directory
|
||||||
WORKDIR /var/www/html
|
WORKDIR /var/www/html
|
||||||
|
|
||||||
# Copy application code first
|
# Dependencies before the source, so a code change does not reinstall vendor.
|
||||||
|
# --no-scripts because package discovery needs the full application.
|
||||||
|
COPY composer.json composer.lock ./
|
||||||
|
RUN composer install --no-dev --optimize-autoloader --no-interaction --no-scripts
|
||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
# Install PHP dependencies after copying all files
|
# dump-autoload triggers post-autoload-dump, which runs package:discover.
|
||||||
RUN composer install --no-dev --optimize-autoloader --no-interaction
|
RUN composer dump-autoload --optimize --no-interaction
|
||||||
|
|
||||||
# Copy built frontend assets from builder stage
|
# Copy built frontend assets from builder stage
|
||||||
COPY --from=frontend-builder /app/public/build/ ./public/build/
|
COPY --from=frontend-builder /app/public/build/ ./public/build/
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue