mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2026-01-13 21:59:34 +00:00
Merge c5210a33c4 into 2157916e9b
This commit is contained in:
commit
f2ffaa2e80
2 changed files with 75 additions and 45 deletions
53
Dockerfile
53
Dockerfile
|
|
@ -1,6 +1,40 @@
|
||||||
ARG BASE_IMAGE=debian:bookworm-slim
|
ARG BASE_IMAGE=debian:bookworm-slim
|
||||||
ARG PHP_VERSION=8.4
|
ARG PHP_VERSION=8.4
|
||||||
|
|
||||||
|
# ---
|
||||||
|
# Build assets stage - runs on native platform (not emulated)
|
||||||
|
# This stage builds the frontend assets (JavaScript, CSS) using Node.js and Yarn
|
||||||
|
# The --platform=$BUILDPLATFORM ensures this stage runs on the native build platform (amd64)
|
||||||
|
# and not under emulation for ARM builds
|
||||||
|
FROM --platform=$BUILDPLATFORM composer:latest AS composer-deps
|
||||||
|
|
||||||
|
WORKDIR /build
|
||||||
|
|
||||||
|
# Copy entire project to install dependencies and generate translations
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Install composer dependencies (needed for Symfony UX assets and cache warmup)
|
||||||
|
RUN composer install --no-dev --no-scripts --no-autoloader --prefer-dist --ignore-platform-reqs && \
|
||||||
|
composer dump-autoload --no-dev --classmap-authoritative && \
|
||||||
|
php bin/console cache:clear --no-warmup && \
|
||||||
|
php bin/console cache:warmup
|
||||||
|
|
||||||
|
# ---
|
||||||
|
|
||||||
|
FROM --platform=$BUILDPLATFORM node:22-bookworm-slim AS assets
|
||||||
|
|
||||||
|
WORKDIR /build
|
||||||
|
|
||||||
|
# Copy entire project with vendor and generated translations from composer-deps stage
|
||||||
|
COPY --from=composer-deps /build ./
|
||||||
|
|
||||||
|
# Install dependencies and build assets
|
||||||
|
RUN yarn install --network-timeout 600000 && \
|
||||||
|
yarn build && \
|
||||||
|
yarn cache clean
|
||||||
|
|
||||||
|
# ---
|
||||||
|
|
||||||
FROM ${BASE_IMAGE} AS base
|
FROM ${BASE_IMAGE} AS base
|
||||||
ARG PHP_VERSION
|
ARG PHP_VERSION
|
||||||
|
|
||||||
|
|
@ -36,6 +70,7 @@ RUN apt-get update && apt-get -y install \
|
||||||
php${PHP_VERSION}-sqlite3 \
|
php${PHP_VERSION}-sqlite3 \
|
||||||
php${PHP_VERSION}-mysql \
|
php${PHP_VERSION}-mysql \
|
||||||
php${PHP_VERSION}-pgsql \
|
php${PHP_VERSION}-pgsql \
|
||||||
|
git \
|
||||||
gpg \
|
gpg \
|
||||||
sudo \
|
sudo \
|
||||||
&& apt-get -y autoremove && apt-get clean autoclean && rm -rf /var/lib/apt/lists/* \
|
&& apt-get -y autoremove && apt-get clean autoclean && rm -rf /var/lib/apt/lists/* \
|
||||||
|
|
@ -45,15 +80,6 @@ RUN apt-get update && apt-get -y install \
|
||||||
# delete the "index.html" that installing Apache drops in here
|
# delete the "index.html" that installing Apache drops in here
|
||||||
&& rm -rvf /var/www/html/*
|
&& rm -rvf /var/www/html/*
|
||||||
|
|
||||||
# Install node and yarn
|
|
||||||
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
|
|
||||||
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
|
|
||||||
curl -sL https://deb.nodesource.com/setup_22.x | bash - && \
|
|
||||||
apt-get update && apt-get install -y \
|
|
||||||
nodejs \
|
|
||||||
yarn \
|
|
||||||
&& apt-get -y autoremove && apt-get clean autoclean && rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
# Install composer
|
# Install composer
|
||||||
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
||||||
|
|
||||||
|
|
@ -149,14 +175,13 @@ RUN a2dissite 000-default.conf && \
|
||||||
a2enconf docker-php && \
|
a2enconf docker-php && \
|
||||||
a2enmod rewrite
|
a2enmod rewrite
|
||||||
|
|
||||||
# Install composer and yarn dependencies for Part-DB
|
# Install composer dependencies for Part-DB
|
||||||
USER www-data
|
USER www-data
|
||||||
RUN composer install -a --no-dev && \
|
RUN composer install -a --no-dev && \
|
||||||
composer clear-cache
|
composer clear-cache
|
||||||
RUN yarn install --network-timeout 600000 && \
|
|
||||||
yarn build && \
|
# Copy pre-built assets from the assets stage
|
||||||
yarn cache clean && \
|
COPY --from=assets /build/public/build ./public/build
|
||||||
rm -rf node_modules/
|
|
||||||
|
|
||||||
# Use docker env to output logs to stdout
|
# Use docker env to output logs to stdout
|
||||||
ENV APP_ENV=docker
|
ENV APP_ENV=docker
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,37 @@
|
||||||
|
# ---
|
||||||
|
# Build assets stage - runs on native platform (not emulated)
|
||||||
|
# This stage builds the frontend assets (JavaScript, CSS) using Node.js and Yarn
|
||||||
|
# The --platform=$BUILDPLATFORM ensures this stage runs on the native build platform (amd64)
|
||||||
|
# and not under emulation for ARM builds
|
||||||
|
FROM --platform=$BUILDPLATFORM composer:latest AS composer-deps
|
||||||
|
|
||||||
|
WORKDIR /build
|
||||||
|
|
||||||
|
# Copy entire project to install dependencies and generate translations
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Install composer dependencies (needed for Symfony UX assets and cache warmup)
|
||||||
|
RUN composer install --no-dev --no-scripts --no-autoloader --prefer-dist --ignore-platform-reqs && \
|
||||||
|
composer dump-autoload --no-dev --classmap-authoritative && \
|
||||||
|
php bin/console cache:clear --no-warmup && \
|
||||||
|
php bin/console cache:warmup
|
||||||
|
|
||||||
|
# ---
|
||||||
|
|
||||||
|
FROM --platform=$BUILDPLATFORM node:22-bookworm-slim AS assets
|
||||||
|
|
||||||
|
WORKDIR /build
|
||||||
|
|
||||||
|
# Copy entire project with vendor and generated translations from composer-deps stage
|
||||||
|
COPY --from=composer-deps /build ./
|
||||||
|
|
||||||
|
# Install dependencies and build assets
|
||||||
|
RUN yarn install --network-timeout 600000 && \
|
||||||
|
yarn build && \
|
||||||
|
yarn cache clean
|
||||||
|
|
||||||
|
# ---
|
||||||
|
|
||||||
FROM dunglas/frankenphp:1-php8.4 AS frankenphp_upstream
|
FROM dunglas/frankenphp:1-php8.4 AS frankenphp_upstream
|
||||||
|
|
||||||
RUN apt-get update && apt-get -y install \
|
RUN apt-get update && apt-get -y install \
|
||||||
|
|
@ -13,33 +47,6 @@ RUN apt-get update && apt-get -y install \
|
||||||
zip \
|
zip \
|
||||||
&& apt-get -y autoremove && apt-get clean autoclean && rm -rf /var/lib/apt/lists/*;
|
&& apt-get -y autoremove && apt-get clean autoclean && rm -rf /var/lib/apt/lists/*;
|
||||||
|
|
||||||
RUN set -eux; \
|
|
||||||
# Prepare keyrings directory
|
|
||||||
mkdir -p /etc/apt/keyrings; \
|
|
||||||
\
|
|
||||||
# Import Yarn GPG key
|
|
||||||
curl -fsSL https://dl.yarnpkg.com/debian/pubkey.gpg \
|
|
||||||
| tee /etc/apt/keyrings/yarn.gpg >/dev/null; \
|
|
||||||
chmod 644 /etc/apt/keyrings/yarn.gpg; \
|
|
||||||
\
|
|
||||||
# Add Yarn repo with signed-by
|
|
||||||
echo "deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian stable main" \
|
|
||||||
| tee /etc/apt/sources.list.d/yarn.list; \
|
|
||||||
\
|
|
||||||
# Run NodeSource setup script (unchanged)
|
|
||||||
curl -sL https://deb.nodesource.com/setup_22.x | bash -; \
|
|
||||||
\
|
|
||||||
# Install Node.js + Yarn
|
|
||||||
apt-get update; \
|
|
||||||
apt-get install -y --no-install-recommends \
|
|
||||||
nodejs \
|
|
||||||
yarn; \
|
|
||||||
\
|
|
||||||
# Cleanup
|
|
||||||
apt-get -y autoremove; \
|
|
||||||
apt-get clean autoclean; \
|
|
||||||
rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
|
|
||||||
# Install PHP
|
# Install PHP
|
||||||
RUN set -eux; \
|
RUN set -eux; \
|
||||||
|
|
@ -90,10 +97,8 @@ RUN set -eux; \
|
||||||
composer run-script --no-dev post-install-cmd; \
|
composer run-script --no-dev post-install-cmd; \
|
||||||
chmod +x bin/console; sync;
|
chmod +x bin/console; sync;
|
||||||
|
|
||||||
RUN yarn install --network-timeout 600000 && \
|
# Copy pre-built assets from the assets stage
|
||||||
yarn build && \
|
COPY --from=assets /build/public/build ./public/build
|
||||||
yarn cache clean && \
|
|
||||||
rm -rf node_modules/
|
|
||||||
|
|
||||||
# Use docker env to output logs to stdout
|
# Use docker env to output logs to stdout
|
||||||
ENV APP_ENV=docker
|
ENV APP_ENV=docker
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue