* chore: remove compiled assets * build: build assets in dockerfile * build: update docker-compose.example.yml instead of docker-compose.yml * ci: build assets in build.yml * ci: build assets once composer packages are installed
64 lines
1.8 KiB
Docker
64 lines
1.8 KiB
Docker
# This Dockerfile is used to create the base phpVMS image for Docker in production.
|
|
# It is based on https://serversideup.net/open-source/docker-php/.
|
|
FROM composer:latest AS vendor
|
|
|
|
LABEL org.opencontainers.image.description="The official phpVMS image"
|
|
|
|
COPY composer.json composer.json
|
|
COPY composer.lock composer.lock
|
|
|
|
COPY database database
|
|
|
|
RUN composer install \
|
|
--ignore-platform-reqs \
|
|
--no-interaction \
|
|
--no-plugins \
|
|
--no-scripts \
|
|
--prefer-dist
|
|
|
|
FROM serversideup/php:8.4-fpm
|
|
|
|
ARG WWWUSER=1000
|
|
ARG WWWGROUP=1000
|
|
|
|
# Switch to root so we can do root things
|
|
USER root
|
|
|
|
# Install missing extensions with root permissions
|
|
RUN install-php-extensions intl bcmath
|
|
|
|
# Install mariadb client (required for backups)
|
|
RUN apt-get update; \
|
|
apt-get upgrade -yqq; \
|
|
apt-get install -yqq --no-install-recommends --show-progress \
|
|
mariadb-client
|
|
|
|
# Install nodejs
|
|
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \
|
|
&& apt-get install -y nodejs \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Deal with permissions
|
|
RUN usermod -ou $WWWUSER www-data \
|
|
&& groupmod -og $WWWGROUP www-data
|
|
|
|
# Drop back to our unprivileged user
|
|
USER www-data
|
|
|
|
# Copy application files
|
|
COPY --chown=www-data:www-data . /var/www/html
|
|
|
|
# Copy deps from the composer build stage
|
|
COPY --chown=www-data:www-data --from=vendor /app/vendor/ /var/www/html/vendor/
|
|
|
|
# Build assets
|
|
# Note: the assets are moved to the build directory in the image, they'll be moved back to
|
|
# the public directory in the entrypoint script. This allows to overwrite the volume
|
|
# so that the assets are also updated in caddy.
|
|
|
|
RUN npm install && npm run build && \
|
|
cp -R ./public/build/ ./build
|
|
|
|
COPY --chmod=755 ./resources/docker/run-dump-autoload.sh /etc/entrypoint.d/20-run-dump-autoload.sh
|
|
COPY --chmod=755 ./resources/docker/copy-assets.sh /etc/entrypoint.d/30-copy-assets.sh
|