Initial commit: Docker infrastructure for fullstack Vollversammlung app

This commit is contained in:
2026-06-28 15:37:48 +02:00
commit 2960855bca
21 changed files with 1434 additions and 0 deletions
+71
View File
@@ -0,0 +1,71 @@
FROM php:8.3-fpm-alpine AS base
# Install system dependencies (minimal for production)
RUN apk add --no-cache \
curl \
oniguruma-dev \
libpng-dev \
libjpeg-turbo-dev \
libxml2-dev \
zip \
unzip \
imagemagick \
ttf-freefont
# Install PHP extensions (production-safe with --enable-option-checking)
RUN docker-php-ext-configure gd --with-jpeg \
&& docker-php-ext-install \
pdo_pgsql \
gd \
intl \
mbstring \
xmlrpc \
opcache
# Enable OPcache for production
RUN echo "opcache.memory_consumption=256" > /usr/local/etc/php/conf.d/opcache.ini \
&& echo "opcache.max_accelerated_files=32531" >> /usr/local/etc/php/conf.d/opcache.ini \
&& echo "opcache.validate_timestamps=0" >> /usr/local/etc/php/conf.d/opcache.ini \
&& echo "opcache.revalidate_freq=0" >> /usr/local/etc/php/conf.d/opcache.ini
# Install Composer (production stage)
FROM composer:latest AS composer
# ---------------
# Build stage install dependencies
# ---------------
FROM base AS build
WORKDIR /app
COPY composer.json composer.lock ./
RUN composer install --no-dev --optimize-autoloader --classmap-authoritative
COPY . .
RUN chmod +x bin/console \
&& APP_ENV=prod APP_DEBUG=0 COMPOSER_DEV_MODE=0 composer dump-autoload --classmap-authoritative --optimize \
&& php bin/console cache:clear --env=prod \
&& php bin/console assets:install public --env=prod
# ---------------
# Final production image
# ---------------
FROM base AS production
LABEL maintainer="devops@vollversammlung" \
description="Vollversammlung Symfony Production Image"
WORKDIR /app
COPY --from=composer /usr/bin/composer /usr/bin/composer
COPY --from=build /app .
# Create necessary directories with correct permissions
RUN chown -R www-data:www-data var/cache var/log var/sessions public/files \
&& find var/ -type d -exec chmod 750 {} \; \
&& find var/ -type f -exec chmod 640 {} \;
EXPOSE 9000
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["php-fpm", "-F"]