Initial commit: Docker infrastructure for fullstack Vollversammlung app
This commit is contained in:
@@ -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"]
|
||||
Reference in New Issue
Block a user