# Usa a imagem oficial PHP 8.4 com Apache FROM php:8.4-apache # Atualiza o sistema e instala dependências básicas RUN apt-get update && apt-get install -y \ libpng-dev \ libjpeg-dev \ libonig-dev \ libxml2-dev \ zip \ unzip \ curl \ git \ libzip-dev \ libfreetype6-dev \ libjpeg62-turbo-dev \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install -j$(nproc) gd mbstring \ && docker-php-ext-install pdo pdo_mysql mysqli zip \ && docker-php-ext-enable opcache # Habilita o módulo de reescrita do Apache (útil para Laravel ou outros frameworks) RUN a2enmod rewrite # Ajusta limites do Apache para aceitar requisições grandes RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf \ && echo "LimitRequestBody 0" >> /etc/apache2/apache2.conf \ && echo "LimitRequestLine 65536" >> /etc/apache2/apache2.conf \ && echo "LimitRequestFieldSize 65536" >> /etc/apache2/apache2.conf # Ajusta limites do PHP (upload e POST maiores) RUN { \ echo "upload_max_filesize=200M"; \ echo "post_max_size=200M"; \ echo "memory_limit=512M"; \ echo "max_execution_time=300"; \ } > /usr/local/etc/php/conf.d/uploads.ini # Substitui a configuração padrão do Apache para permitir .htaccess COPY ./apache/000-default.conf /etc/apache2/sites-available/000-default.conf # Copia os arquivos do projeto para a pasta padrão do Apache COPY . /var/www/html/ # Cria os diretórios de upload, caso não existam RUN mkdir -p /var/www/html/temp \ && mkdir -p /var/www/html/rel # Define permissões apropriadas RUN chown -R www-data:www-data /var/www/html \ && find /var/www/html -type d -exec chmod 755 {} + \ && find /var/www/html -type f -exec chmod 644 {} + # Define o diretório de trabalho WORKDIR /var/www/html # Expõe a porta padrão HTTP EXPOSE 80 # Comando de inicialização (padrão do Apache na imagem oficial) CMD ["apache2-foreground"]