2025-06-05 19:04:26 -06:00

88 lines
2.2 KiB
Docker

### Etapa 1: Composer Builder
FROM composer:2 AS composer_builder
WORKDIR /app
# Copiamos solo composer.json y composer.lock
COPY ../../composer.json ../../composer.lock ./
RUN composer clear-cache \
&& composer install --no-dev --optimize-autoloader --prefer-source --no-interaction
###
### Etapa 2: Vite Builder (Node)
###
FROM node:20-alpine AS vite_builder
WORKDIR /frontend
# Copiamos package.json y package-lock.json
COPY ../../package.json ../../package-lock.json ./
RUN npm ci --silent --no-progress
# Copiamos assets de vendor (si los paquetes Koneko los exponen)
#COPY --from=composer_builder /app/vendor/koneko/laravel-vuexy-admin/resources/assets ./vendor/koneko/laravel-vuexy-admin/resources/assets
# Copiamos el resto del código fuente
COPY ../../ ./
# Build con Vite
RUN npm run build
###
### Etapa 3: PHP-FPM Final
###
FROM php:8.2-fpm-alpine AS final
WORKDIR /var/www
# 1) Instalamos extensiones PHP (igual que antes)
RUN apk add --no-cache \
bash \
git \
unzip \
libzip-dev \
oniguruma-dev \
shadow \
curl \
supervisor \
libpng-dev \
libjpeg-turbo-dev \
libwebp-dev \
libxpm-dev \
libxml2-dev \
$PHPIZE_DEPS \
&& pecl install redis \
&& docker-php-ext-enable redis \
&& docker-php-ext-install \
pdo \
pdo_mysql \
mbstring \
zip \
bcmath \
opcache \
&& apk del $PHPIZE_DEPS \
&& rm -rf /var/cache/apk/*
# 2) Creamos usuario “appuser”
RUN addgroup -g 1000 appuser \
&& adduser -D -u 1000 -G appuser appuser
# 3) Copiamos vendor y composer.json desde composer_builder
COPY --from=composer_builder /app/vendor ./vendor
COPY --from=composer_builder /app/composer.json ./composer.json
COPY --from=composer_builder /app/composer.lock ./composer.lock
# 4) Copiamos todo el resto del app PHP
COPY ../../ ./
# 5) Copiamos los assets compilados por Vite (public/build)
COPY --from=vite_builder /frontend/public/build ./public/build
# 6) Copiamos configuración de opcache
COPY opcache.ini /usr/local/etc/php/conf.d/opcache.ini
# 7) Ajustamos permisos finales
RUN chown -R appuser:appuser /var/www
USER appuser
CMD ["php-fpm"]