# Ponte WhatsApp (Baileys). Container separado porque nao existe biblioteca Ruby # que fale o protocolo do WhatsApp Web — e porque isolar a sessao num processo # proprio evita que uma queda dela derrube o Puma. FROM node:20-alpine WORKDIR /app # git: OBRIGATORIO. O Baileys puxa `libsignal` de um REPOSITORIO GIT, nao do # registry do npm. Sem git na imagem o install morre logo no inicio com # `npm error syscall spawn git / ENOENT` — nao e erro de rede nem de versao. # python3/make/g++: node-gyp, para as dependencias nativas de cripto. RUN apk add --no-cache git python3 make g++ COPY package.json ./ # --no-audit --no-fund: so tiram ruido do log de build, que e onde se enxerga o # erro real quando algo falha aqui. RUN npm install --omit=dev --no-audit --no-fund COPY server.js ./ # A sessao pareada vive AQUI e precisa de volume: sem isso, cada deploy exige # escanear o QR de novo. VOLUME ["/data"] ENV WHATSAPP_DATA_DIR=/data EXPOSE 3001 CMD ["node", "server.js"]