88 lines
2.2 KiB
Docker
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"]
|