# Worker de voz (SIP/ARI + IA em tempo real) — mesmo padrão do Dockerfile.worker: # roda TS direto via tsx (sem build), imagem single-stage com devDeps. FROM node:22-alpine WORKDIR /app LABEL org.opencontainers.image.source="https://github.com/melgarafael/DeskcommCRM" \ org.opencontainers.image.licenses="MIT" \ org.opencontainers.image.title="DeskcommCRM voice-agent" RUN corepack enable && corepack prepare pnpm@9.15.9 --activate COPY package.json pnpm-lock.yaml ./ # `package.json` declara `pnpm.patchedDependencies`, e o pnpm lê o arquivo do # patch durante o `install` — não no `postinstall`. Sem esta linha ele morre com # ENOENT em `patches/@react-pdf__hyphenate.patch` e a imagem não nasce. # `Dockerfile` e `Dockerfile.worker` já copiam; esta era a única que não copiava. COPY patches ./patches RUN pnpm install --frozen-lockfile COPY . . # A versão por ÚLTIMO, como no Dockerfile.worker. Declarada antes do `pnpm install`, # a instrução `ARG` entrava na chave de cache de tudo o que vem depois e a # instalação INTEIRA de dependências era refeita a cada release, só porque o # número mudou. Aqui ela só invalida o que não custa nada. ARG APP_VERSION=dev ENV APP_VERSION=$APP_VERSION # Só a porta AudioSocket: não afirma saúde de ARI, tronco, áudio ou chamada. HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \ CMD ["node", "scripts/voice-agent-healthcheck.mjs"] CMD ["pnpm", "exec", "tsx", "workers/voice-agent/index.ts"]