# 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"]
