Configuracion unica
Un proyecto con estas caracteristicas necesita una configuracion unica, que integre tanto laravel como el motor php para poder ejecutarlo, esto se logra gracias a Dockerfile, nginx y php-fpm creando asi un entorno portable sin importar el sistema operativo.
Dockerfile
# Etapa 1: Construir la app de Laravel
FROM php:8.2-fpm AS builder
 
# Instalar dependencias del sistema
RUN apt-get update && apt-get install -y \
    git curl unzip libzip-dev \
    && docker-php-ext-install pdo pdo_mysql zip opcache
 
# Instalar Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
 
# Crear grupo y usuario emi
RUN groupadd -g 2000 emi && \
    useradd -u 2000 -g 2000 -d /home/emi -m -s /bin/bash emi && \
    mkdir -p /home/emi/.composer && \
    chown -R emi:emi /home/emi
 
WORKDIR /var/www
 
# Copiar código de Laravel
COPY honeypot-emi/ ./
 
# Cambiar propietario antes de las operaciones
RUN chown -R emi:emi /var/www
 
# Cambiar a usuario emi para las operaciones de Composer y Laravel
USER emi
 
# Instalar dependencias PHP/Laravel
RUN composer install --no-interaction --optimize-autoloader --no-dev \
    && php artisan key:generate \
    && rm -rf public/storage \
    && php artisan storage:link
 
# Volver a root para ajustar permisos finales
USER root
RUN chmod -R 775 /var/www/storage /var/www/bootstrap/cache
 
# Etapa 2: Imagen final con PHP-FPM + Nginx
FROM php:8.2-fpm
 
# Instalar Nginx y utilidades
RUN apt-get update && apt-get install -y nginx supervisor \
    && apt-get clean && rm -rf /var/lib/apt/lists/*
 
# Crear grupo y usuario emi en la imagen final
RUN groupadd -g 2000 emi && \
    useradd -u 2000 -g 2000 -d /home/emi -m -s /bin/bash emi
 
# Copiar PHP y Composer desde la etapa anterior
COPY --from=builder /usr/bin/composer /usr/bin/composer
COPY --from=builder /var/www /var/www
 
# Configuración de Nginx
COPY nginx/default.conf /etc/nginx/conf.d/default.conf
 
# Configurar Nginx para ejecutar como usuario emi
RUN sed -i 's/user www-data;/user emi;/' /etc/nginx/nginx.conf
 
# Configurar PHP-FPM para ejecutar como usuario emi
RUN sed -i 's/user = www-data/user = emi/' /usr/local/etc/php-fpm.d/www.conf && \
    sed -i 's/group = www-data/group = emi/' /usr/local/etc/php-fpm.d/www.conf
 
# Asegurar que emi tenga permisos en directorios de Nginx
RUN chown -R emi:emi /var/log/nginx /var/lib/nginx /run
 
# Asegurar permisos correctos para emi
RUN chown -R emi:emi /var/www \
    && chmod -R 775 /var/www/storage /var/www/bootstrap/cache \
    && chmod -R 775 /var/www/database
 
# Configuración de supervisord para correr Nginx + PHP-FPM juntos
RUN printf "[supervisord]\nnodaemon=true\n\n[program:php-fpm]\ncommand=php-fpm\n\n[program:nginx]\ncommand=nginx -g 'daemon off;'\n" \
    > /etc/supervisor/conf.d/supervisord.conf
 
WORKDIR /var/www
 
EXPOSE 8080
 
CMD ["supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]Dockerfile construido por Krypton612 - Ronald Diaz
este contenedor es portable, ahora mismo se tiene una version desplegada en el repositorio de krypton612 revisar si necesita una version propia