35 lines
1.4 KiB
Docker
35 lines
1.4 KiB
Docker
# 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.
|
|
# tzdata: o Alpine nao traz zoneinfo. Sem ele, TZ=America/Sao_Paulo e ignorado
|
|
# em silencio e o log da ponte fica 3h adiantado (UTC), atrapalhando o
|
|
# cruzamento com o log do Rails na hora de investigar um envio.
|
|
RUN apk add --no-cache git python3 make g++ tzdata
|
|
|
|
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
|
|
|
|
# Mesmo fuso do container do Rails — ver o comentario no Dockerfile da raiz.
|
|
ENV TZ=America/Sao_Paulo
|
|
RUN ln -snf "/usr/share/zoneinfo/$TZ" /etc/localtime && echo "$TZ" > /etc/timezone
|
|
|
|
EXPOSE 3001
|
|
CMD ["node", "server.js"]
|