-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
53 lines (41 loc) · 1.62 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# Usamos la imagen base de Puppeteer que ya incluye Chrome y la mayoría de dependencias necesarias
FROM ghcr.io/puppeteer/puppeteer:21.5.2
# Establece el directorio donde se colocará y ejecutará la aplicación
WORKDIR /usr/src/app
# Cambia temporalmente al usuario root para poder instalar paquetes
USER root
# Instala las dependencias adicionales necesarias
RUN apt-get update && apt-get install -y \
xvfb \
libgbm-dev \
procps \
htop \
net-tools \
&& rm -rf /var/lib/apt/lists/*
# Copia los archivos de dependencias de Node.js
COPY package*.json ./
# Instala las dependencias de Node.js en modo producción
RUN npm install
# Instala PM2 globalmente
RUN npm install pm2 -g
# Copia todo el código fuente de la aplicación
COPY . .
# Configura las variables de entorno necesarias
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
PUPPETEER_EXECUTABLE_PATH=/usr/bin/google-chrome-stable \
NODE_OPTIONS="--max-old-space-size=512" \
# Variables para gestión de memoria de Puppeteer
CHROMIUM_FLAGS="--disable-dev-shm-usage --no-sandbox --disable-gpu --disable-software-rasterizer --js-flags='--expose-gc'" \
# Variables para el sistema de estabilidad
MAX_RECONNECT_ATTEMPTS=10 \
RECONNECT_DELAY=10000 \
HEALTH_CHECK_INTERVAL=120000
# Crea y configura el directorio para la sesión de WhatsApp
RUN mkdir -p .wwebjs_auth/session-client \
&& chown -R pptruser:pptruser .wwebjs_auth
# Expone el puerto que usará la aplicación
EXPOSE 3000
# Cambia al usuario no privilegiado pptruser por seguridad
USER pptruser
# Comando para iniciar la aplicación con PM2
CMD ["pm2-runtime", "bot/bot.js"]