fix(docker): implement multi-stage build and serve dist folder
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
David Fencl
2025-12-11 19:12:53 +01:00
parent 188c7d4bc6
commit 065d57a74f
2 changed files with 27 additions and 13 deletions

View File

@@ -1,22 +1,27 @@
#FROM php:8.0-apache
# Stage 1: Build the React Application
FROM node:20 AS build
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
RUN npm run build
# Stage 2: Serve the application with Apache
FROM --platform=linux/amd64 php:8.4-apache
WORKDIR /var/www/html
#COPY index.php index.php
# Enable necessary Apache modules
RUN a2enmod rewrite headers
RUN mkdir /app
COPY vhost.conf /etc/apache2/sites-available/000-default.conf
# COPY adf/saveData.php /var/www/html/saveData.php
# Copy the built application from the build stage
COPY --from=build /app/dist /app/dist
WORKDIR /app
# Ensure correct permissions
RUN chown -R www-data:www-data /app
COPY . .
# ADD extras/dockerstart.sh /usr/local/servicemix/bin/
# RUN chmod 755 /usr/local/bin/dockerstart.sh
RUN chown -R www-data:www-data /app && a2enmod rewrite
# Keep original PHP extensions just in case
RUN docker-php-ext-install mysqli pdo pdo_mysql
EXPOSE 80

View File

@@ -3,13 +3,22 @@ LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so
<VirtualHost *:80>
ServerName localhost
DocumentRoot /app
DocumentRoot /app/dist
<Directory "/app">
<Directory "/app/dist">
Options Indexes FollowSymLinks Includes execCGI
AllowOverride All
Require all granted
allow from all
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log