Ctrl K
ComunidadGuías…

Dockerfile.build

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Stage 1 – Build static assets (Vite/Node)
FROM node:24 AS vite

WORKDIR /app

# Copy only what Vite needs
COPY frontend ./

RUN npm ci && \
    npm run build

# ––––––––––––––––––––––––––––––––––––––

# Stage 2: Composer runtime dependencies
FROM composer/composer AS composer

WORKDIR /app

# Copy source files needed for Composer install and autoload
COPY . .

RUN composer install --no-dev --optimize-autoloader --prefer-dist --no-interaction --no-scripts

# ––––––––––––––––––––––––––––––––––––––

# Stage 3: Final runtime image
FROM php:8.5.12-apache

# Install system dependencies
RUN apt-get update && \
    apt-get install -y libzip-dev && \
    docker-php-ext-install zip && \
    apt-get install -y certbot python3-certbot-apache && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

RUN a2enmod rewrite && \
    a2enmod ssl

WORKDIR /var/www/html

RUN cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini && \
    sed -i 's/upload_max_filesize.*/upload_max_filesize = 32M/' /usr/local/etc/php/php.ini && \
    sed -i 's/post_max_size.*/post_max_size = 32M/' /usr/local/etc/php/php.ini && \
    sed -i 's/memory_limit.*/memory_limit = 256M/' /usr/local/etc/php/php.ini && \
    sed -i 's/max_execution_time.*/max_execution_time = 60/' /usr/local/etc/php/php.ini

RUN rm -rf /etc/apache2/sites-enabled/*
COPY ./apache-conf /etc/apache2/sites-enabled

COPY Config.php init.php routes.php app-info.json ./
COPY controllers controllers
COPY framework framework
COPY models models
COPY public public
COPY --from=vite /app/dist public/dist
COPY utils utils
COPY views views
COPY --from=composer /app/vendor vendor

RUN mkdir /var/www/html/storage && \
    chown www-data:www-data /var/www/html/storage && \
    mkdir /var/www/html/storage/img && \
    chown www-data:www-data /var/www/html/storage/img

RUN find . \( -name ".DS_Store" -o -name ".gitignore" \) -type f -delete