# syntax=docker/dockerfile:1.6

######################################
# 1) PHP-FPM runtime (CodeIgniter)   #
######################################
FROM php:8.2-fpm-alpine AS php
WORKDIR /var/www/html

# Install OS deps + PHP extensions (incl. intl)
RUN apk add --no-cache icu-dev libzip-dev oniguruma-dev bash curl git unzip \
 && docker-php-ext-configure intl \
 && docker-php-ext-install pdo pdo_mysql mysqli intl zip opcache

# Opcache tuning
COPY docker/php/opcache.ini /usr/local/etc/php/conf.d/opcache.ini

# Install Composer (copy from official image)
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

# Copy only composer files first for better caching
COPY composer.json composer.lock ./

# Run composer install **after** intl is available
RUN composer install --no-dev --prefer-dist --no-interaction --no-progress

# Now copy the rest of your app
COPY . .

# Non-root user
RUN addgroup -g 1000 www \
 && adduser -G www -g www -s /bin/sh -D www \
 && chown -R www:www /var/www/html
USER www

EXPOSE 9000
HEALTHCHECK --interval=30s --timeout=10s --retries=3 CMD php -v || exit 1

######################################
# 2) Nginx to serve static + proxy   #
######################################
FROM nginx:1.27-alpine AS nginx
WORKDIR /var/www/html

# Copy app so Nginx can serve assets
COPY --from=php /var/www/html /var/www/html

# Nginx vhost
COPY docker/nginx/codeigniter.conf /etc/nginx/conf.d/default.conf

EXPOSE 80
HEALTHCHECK --interval=30s --timeout=10s --retries=3 CMD wget -q -O - http://127.0.0.1/ || exit 1
