Files
whatsapp/Dockerfile.worker

73 lines
1.7 KiB
Docker

# Dockerfile para workers dedicados (sin Nginx)
FROM php:8.2-cli-alpine
# Configurar zona horaria Colombia
ENV TZ=America/Bogota
# Instalar dependencias
RUN apk add --no-cache \
bash \
su-exec \
libzip \
libzip-dev \
icu \
icu-dev \
icu-libs \
oniguruma \
oniguruma-dev \
mysql-client \
redis \
zlib-dev \
tzdata \
&& cp /usr/share/zoneinfo/America/Bogota /etc/localtime \
&& echo "America/Bogota" > /etc/timezone
# Instalar extensiones PHP
RUN docker-php-ext-install -j$(nproc) \
pdo \
pdo_mysql \
mysqli \
zip \
intl \
mbstring \
pcntl \
opcache
# Instalar Redis extension (versión fija para cache reproducible)
RUN apk add --no-cache --virtual .build-deps $PHPIZE_DEPS \
&& pecl install redis-6.0.2 \
&& docker-php-ext-enable redis \
&& apk del .build-deps
# Crear usuario
RUN addgroup -g 1000 -S www && \
adduser -u 1000 -S www -G www
# Copiar Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
# Working directory
WORKDIR /var/www/html
# Copiar código
COPY --chown=www:www . .
# Instalar dependencias
RUN if [ -f composer.json ]; then \
composer install --no-dev --optimize-autoloader --no-interaction; \
fi
# Dar permisos
RUN chmod +x worker.php
# Entrypoint: arregla permisos del volumen montado y ejecuta como www
COPY docker/worker-entrypoint.sh /usr/local/bin/worker-entrypoint.sh
RUN chmod +x /usr/local/bin/worker-entrypoint.sh
# Health check
HEALTHCHECK --interval=60s --timeout=5s --start-period=30s --retries=3 \
CMD pgrep -f "worker.php" || exit 1
ENTRYPOINT ["/usr/local/bin/worker-entrypoint.sh"]
CMD ["php", "worker.php", "--daemon"]