WPPCONNECT Server, Docker Deploy
Published: 2024-03-09 03:04:58

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 [](https://wppconnect.io/wppconnect/) 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.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x6k7dnms0hyb19dx8c5e.jpeg)

Hoy les comparto mis primeros pasos para iniciar con el despliegue a producción de la librería.
Iniciamos descargando el repositorio desde GitHub [](https://github.com/wppconnect-team/wppconnect), 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.

1. 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.

2. 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
```

3. 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"]
```
4. 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: {}

```

5. 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.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6c2hdri4wfcut8omcy1m.jpeg)

Carlos Sanchez, developer Full-Stack JavaScript/TypeScript