WPPCONNECT Server, Docker Deploy
Carlos Sanchez
Posted on March 9, 2024
Hola developers, hoy les comparto mi experiencia y frustración en la implementación de la librería wwpconnect a través de su API REST y todo el desafío a la hora de desplegar en producción.
¿Quién no se ha enfrentado con el típico problema donde vamos iniciando en la empresa o en el producto y queremos ahorrar recursos?
Todo un reto encontrarme con el requerimiento de querer usar una librería no oficial de WhatasApp web y no tener experiencia en ello.
Hoy les comparto mis primeros pasos para iniciar con el despliegue a producción de la librería.
Iniciamos descargando el repositorio desde GitHub , nos encontraremos con un proyecto completo, con poca necesidad de cambios para realizar un despliegue completo y funcional.
Una vez clonado, iniciamos la configuración de Docker.
- Creamos un fichero Dockerfile donde vamos a especificar el directorio y los comandos para prepararlo a producción.
FROM node:lts-alpine3.18 as base
WORKDIR /app
ENV NODE_ENV=production PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
COPY package.json ./
RUN yarn install --production --pure-lockfile && \
yarn cache clean
Especificamos que base de node usaremos, además especificamos el directorio donde enviaremos todos los archivos necesarios para la ejecución, exportaremos una variable de puppeteer skip chromium donde le decimos que no genere cada vez que compile, una descarga nueva de chromiun, por último copias el package al directorio raíz y corremos la instalación de dependencias.
- Pasamos a la generación de los archivos build para ejecutar nuestro proyecto compilado.
FROM base as build
WORKDIR /app
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
COPY package.json ./
RUN yarn install --production=false --pure-lockfile && \
yarn cache clean
COPY . .
RUN yarn build
- Agregamos chromiun y la ejecución de nuestro proyecto.
FROM base
WORKDIR /app/
RUN apk add --no-cache chromium
RUN yarn cache clean
COPY . .
COPY --from=build /app/ /app/
EXPOSE 21465
ENTRYPOINT ["node", "dist/server.js"]
- Creamos nuestro archivo compose de docker y para poder correr nuestra API en el demonio de docker.
version: '3.9'
services:
wppconnect:
build:
context: .
volumes:
- ./config.ts:/app/config.ts
- ./wppconnect_tokens:/app/tokens
ports:
- '21465:21465'
mongo:
image: mongo:latest
restart: always
container_name: mongo
environment:
MONGO_INITDB_ROOT_USERNAME: test-app
MONGO_INITDB_ROOT_PASSWORD: 12345678a
ports:
- '27017:27017'
volumes:
mongodb_data_container:
wppconnect_tokens: {}
- Por último corremos en nuestro cloud el comando de docker-compose up -d y disfrutamos nuestro servicio de WhatsApp Web.
Conclusión:
WppConnect API un proyecto donde nos encontramos con una solución no tan directa con WhatsApp Web, pero con gran facilidad de implementar para poder cumplir con un requerimiento y de fácil uso.
Carlos Sanchez, developer Full-Stack JavaScript/TypeScript
Posted on March 9, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.