11FROM php:8.2-fpm
22
3- RUN apt-get update && apt-get install -y \
4- libpq-dev \
5- git \
6- unzip \
7- nginx \
8- bash \
9- docker.io \
10- python3 \
11- && rm -rf /var/lib/apt/lists/*
12-
13- RUN docker-php-ext-install pdo pdo_pgsql
14-
3+ # 1) Install system packages & PHP extensions
4+ RUN apt-get update \
5+ && apt-get install -y \
6+ libpq-dev \
7+ git \
8+ unzip \
9+ nginx \
10+ bash \
11+ docker.io \
12+ python3 \
13+ && docker-php-ext-install pdo pdo_pgsql \
14+ && rm -rf /var/lib/apt/lists/*
15+
16+ # 2) Add www-data to the docker group (for socket use)
1517RUN usermod -aG docker www-data
1618
1719ENV DOCKER_HOST=unix:///var/run/docker.sock
1820
1921WORKDIR /var/www/html
2022
21- COPY . /var/www/html
22-
23- COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
23+ # 3) Cache Composer install early
24+ COPY composer.json composer.lock ./
25+ RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
26+ && composer install --no-dev --optimize-autoloader --no-interaction \
27+ && rm -rf ~/.composer/cache
2428
25- RUN composer install --no-dev --optimize-autoloader --no-interaction
29+ # 4) Copy the rest of your application
30+ COPY . .
2631
27- COPY docker/nginx.conf /etc/nginx/sites-available/default
32+ # 5) Ensure runtime dirs exist & are owned by www-data
33+ RUN mkdir -p var/log var/cache public/submissions \
34+ && chown -R www-data:www-data var \
35+ && chmod -R 777 var/log var/cache public/submissions
2836
29- RUN mkdir -p var/log var/ cache public/submissions && \
30- chown -R www-data:www-data /var/www/html && \
31- chmod -R 755 /var/www/html && \
32- chmod -R 777 var/log var/ cache public/submissions
37+ # 6) Pre-warm Symfony prod cache (as root) and re-chown
38+ RUN php bin/console cache:clear --env=prod --no-warmup \
39+ && php bin/console cache:warmup --env=prod \
40+ && chown -R www-data:www-data var/cache
3341
42+ # 7) Replace php.ini with production settings
3443RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
3544
36- COPY docker/start.sh /usr/local/bin/start
37- RUN chmod +x /usr/local/bin/start
45+ # 8) Install your custom nginx vhost
46+ COPY docker/nginx.conf /etc/nginx/sites-available/default
47+
48+ # 9) Add entrypoint
49+ COPY docker/start.sh /usr/local/bin/start.sh
50+ RUN chmod +x /usr/local/bin/start.sh
3851
3952EXPOSE 80
40- CMD ["/usr/local/bin/start" ]
53+
54+ # ENTRYPOINT will do migrations, start nginx+php-fpm, cleanup loop, etc.
55+ ENTRYPOINT ["start.sh" ]
56+ CMD []
0 commit comments