# ============================================================
#  Image Apache + PHP pour Symfony
#  Le code source est copié dans l'image au moment du build
# ============================================================

FROM php:8.3-apache

# ── Dépendances système ──────────────────────────────────────
RUN apt-get update && apt-get install -y \
    libicu-dev \
    libzip-dev \
    libpq-dev \
    unzip \
    git \
    && docker-php-ext-install \
        intl \
        pdo \
        pdo_pgsql \
        zip \
        opcache \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# ── Modules Apache ───────────────────────────────────────────
RUN a2enmod rewrite headers

# ── Composer ────────────────────────────────────────────────
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

# ── Code source Symfony ──────────────────────────────────────
WORKDIR /var/www/html

# On copie d'abord composer.json pour profiter du cache Docker
COPY app/composer.json app/composer.lock ./
RUN composer install --no-dev --optimize-autoloader --no-scripts --no-interaction

# Puis le reste du code
COPY app/ .

# ── Assets ──────────────────────────────────────────────
RUN APP_ENV=prod php bin/console importmap:install
RUN APP_ENV=prod php bin/console asset-map:compile

# ── Droits ──────────────────────────────────────────────────
RUN mkdir -p /var/www/html/var \
    && chown -R www-data:www-data /var/www/html \
    && chmod -R 755 /var/www/html/var

# ── Config PHP ───────────────────────────────────────────
COPY docker/apache/php.ini /usr/local/etc/php/conf.d/custom.ini
COPY docker/apache/opcache.ini /usr/local/etc/php/conf.d/opcache.ini

# ── Config Apache ────────────────────────────────────────────
COPY docker/apache/symfony.conf /etc/apache2/sites-enabled/000-default.conf

# ── Gestion Droits Volume ────────────────────────────────────────────
COPY docker/apache/entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh

ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["apache2-foreground"]

EXPOSE 80
