Files
whatsapp/Dockerfile.dev
T
2026-01-28 02:23:36 -05:00

151 lines
4.3 KiB
Docker

# Dockerfile para DESARROLLO
# Basado en el Dockerfile principal pero con herramientas de desarrollo
FROM php:8.2-fpm-alpine
# Instalar dependencias del sistema
RUN apk add --no-cache \
nginx \
supervisor \
curl \
vim \
git \
unzip \
bash \
mysql-client \
redis \
ffmpeg \
# Dependencias para XDebug y desarrollo
autoconf \
g++ \
make \
# Librerías PHP
libpng-dev \
libjpeg-turbo-dev \
freetype-dev \
libzip-dev \
icu-dev \
oniguruma-dev
# Instalar extensiones PHP
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) \
pdo \
pdo_mysql \
mysqli \
mbstring \
zip \
gd \
intl \
opcache \
exif \
pcntl \
sockets
# Instalar Redis extension
RUN apk add --no-cache --virtual .build-deps \
$PHPIZE_DEPS \
&& pecl install redis \
&& docker-php-ext-enable redis \
&& apk del .build-deps
# Instalar XDebug para debugging
RUN apk add --no-cache --virtual .build-deps-xdebug $PHPIZE_DEPS \
&& pecl install xdebug \
&& docker-php-ext-enable xdebug \
&& apk del .build-deps-xdebug
# Instalar Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# Configuración PHP para DESARROLLO
RUN { \
echo 'display_errors = On'; \
echo 'display_startup_errors = On'; \
echo 'error_reporting = E_ALL'; \
echo 'log_errors = On'; \
echo 'memory_limit = 512M'; \
echo 'max_execution_time = 300'; \
echo 'upload_max_filesize = 100M'; \
echo 'post_max_size = 100M'; \
echo 'date.timezone = America/Bogota'; \
# Habilitar shell_exec para conversión de audio
echo 'disable_functions = '; \
# Desactivar OPcache para hot-reload
echo 'opcache.enable = 0'; \
echo 'opcache.enable_cli = 0'; \
} > /usr/local/etc/php/conf.d/dev.ini
# Configuración XDebug
RUN { \
echo 'xdebug.mode=debug,develop,coverage'; \
echo 'xdebug.start_with_request=trigger'; \
echo 'xdebug.client_host=host.docker.internal'; \
echo 'xdebug.client_port=9003'; \
echo 'xdebug.log=/var/www/html/logs/xdebug.log'; \
echo 'xdebug.log_level=7'; \
} > /usr/local/etc/php/conf.d/xdebug.ini
# Configuración Nginx
COPY docker/nginx/default.conf /etc/nginx/http.d/default.conf
# Configuración PHP-FPM
RUN { \
echo '[www]'; \
echo 'user = www-data'; \
echo 'group = www-data'; \
echo 'listen = /run/php/php-fpm.sock'; \
echo 'listen.owner = www-data'; \
echo 'listen.group = www-data'; \
echo 'pm = dynamic'; \
echo 'pm.max_children = 20'; \
echo 'pm.start_servers = 4'; \
echo 'pm.min_spare_servers = 2'; \
echo 'pm.max_spare_servers = 6'; \
echo 'clear_env = no'; \
echo 'catch_workers_output = yes'; \
echo 'php_admin_value[error_log] = /var/www/html/logs/php-fpm-error.log'; \
} > /usr/local/etc/php-fpm.d/www.conf
# Configuración Supervisor para desarrollo (con logs más verbosos)
RUN { \
echo '[supervisord]'; \
echo 'nodaemon=true'; \
echo 'logfile=/var/www/html/logs/supervisord.log'; \
echo 'pidfile=/var/run/supervisord.pid'; \
echo 'loglevel=debug'; \
echo ''; \
echo '[program:nginx]'; \
echo 'command=/usr/sbin/nginx -g "daemon off;"'; \
echo 'autostart=true'; \
echo 'autorestart=true'; \
echo 'stdout_logfile=/var/www/html/logs/nginx-stdout.log'; \
echo 'stderr_logfile=/var/www/html/logs/nginx-stderr.log'; \
echo 'priority=10'; \
echo ''; \
echo '[program:php-fpm]'; \
echo 'command=/usr/local/sbin/php-fpm --nodaemonize'; \
echo 'autostart=true'; \
echo 'autorestart=true'; \
echo 'stdout_logfile=/var/www/html/logs/php-fpm-stdout.log'; \
echo 'stderr_logfile=/var/www/html/logs/php-fpm-stderr.log'; \
echo 'priority=5'; \
} > /etc/supervisord.conf
# Crear directorios necesarios
RUN mkdir -p /var/www/html/logs /var/www/html/uploads /run/php \
&& chown -R www-data:www-data /var/www/html \
&& chmod -R 755 /var/www/html
WORKDIR /var/www/html
# Exponer puertos
EXPOSE 80 9003
# Script de inicio
COPY docker/entrypoint-dev.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]