11# ## BASE IMAGE
2- FROM node:20-bullseye-slim AS base
2+ FROM node:24-bullseye-slim AS base
3+
4+ # Opcional: timezone/locale mínimos, se precisar.
5+ # RUN apt-get update && apt-get install -y tzdata && rm -rf /var/lib/apt/lists/*
36
47# ## BUILD IMAGE
58FROM base AS builder
6-
79WORKDIR /codechat
810
9- # Instalar dependências de construção primeiro
11+ # Dependências de SO necessárias no build (git/ffmpeg se usados em build)
1012RUN apt-get update && apt-get install -y git ffmpeg && rm -rf /var/lib/apt/lists/*
1113
12- # Copiar arquivos package.json e instalar dependências
14+ # Instalar TODAS as deps (inclui dev) para conseguir rodar tsc
1315COPY package*.json ./
14- RUN npm install --force
16+ # Use npm ci para builds reprodutíveis
17+ RUN npm i --force
1518
16- # Copiar os demais arquivos necessários para o build
19+ # Copiar código
1720COPY tsconfig.json .
1821COPY ./src ./src
1922COPY ./public ./public
@@ -22,37 +25,42 @@ COPY ./prisma ./prisma
2225COPY ./views ./views
2326COPY .env.dev .env
2427
25- # Definir variável de ambiente para a construção
26- ENV DATABASE_URL=mysql://mysql:pass@localhost/db_test
27- RUN npx prisma generate
28+ # Variável para gerar Prisma Client (não precisa apontar p/ DB real)
29+ ENV DATABASE_URL="mysql://mysql:pass@localhost/db_test"
2830
31+ # Gerar prisma e compilar TS -> JS
32+ RUN npx prisma generate
2933RUN npm run build
3034
35+ # Remover devDependencies para preparar node_modules "de produção"
36+ # RUN npm prune --omit=dev
37+
3138# ## PRODUCTION IMAGE
3239FROM base AS production
33-
3440WORKDIR /codechat
3541
36- LABEL com.api.version="1.3.3"
37- LABEL com.api.mantainer="https://github.com/code-chat-br"
38- LABEL com.api.repository="https://github.com/code-chat-br/whatsapp-api"
39- LABEL com.api.issues="https://github.com/code-chat-br/whatsapp-api/issues"
42+ # Instale apenas o que o app precisa em runtime (ex.: ffmpeg)
43+ RUN apt-get update && apt-get install -y ffmpeg && rm -rf /var/lib/apt/lists/*
4044
41- # Copiar arquivos construídos do estágio builder
45+ LABEL com.api.version="1.3.3" \
46+ com.api.mantainer="https://github.com/code-chat-br" \
47+ com.api.repository="https://github.com/code-chat-br/whatsapp-api" \
48+ com.api.issues="https://github.com/code-chat-br/whatsapp-api/issues"
49+
50+ # Copiar artefatos já prontos e node_modules podado
4251COPY --from=builder /codechat/dist ./dist
4352COPY --from=builder /codechat/docs ./docs
4453COPY --from=builder /codechat/prisma ./prisma
4554COPY --from=builder /codechat/views ./views
46- COPY --from=builder /codechat/node_modules ./node_modules
55+ COPY --from=builder /codechat/public ./public
4756COPY --from=builder /codechat/package*.json ./
4857COPY --from=builder /codechat/.env ./
49- COPY --from=builder /codechat/public ./public
58+ COPY --from=builder /codechat/node_modules ./node_modules
5059COPY ./deploy_db.sh ./
5160
52- RUN chmod +x ./deploy_db.sh
53-
54- RUN mkdir instances
61+ RUN chmod +x ./deploy_db.sh && mkdir -p instances
5562
5663ENV DOCKER_ENV=true
5764
58- ENTRYPOINT [ "/bin/bash" , "-c" , ". ./deploy_db.sh && node ./dist/src/main" ]
65+ # Se seu deploy_db.sh precisa do shell, mantenha o bash -c
66+ ENTRYPOINT ["/bin/bash" , "-c" , ". ./deploy_db.sh && node ./dist/src/main" ]
0 commit comments