Files
copilotkit__copilotkit/examples/slack/Dockerfile.runtime
Tyler Slaton e2e403dc99 feat(examples/slack): Dockerfiles for the runtime and bot services
Encode the deployment recipe in the repo instead of platform config:
digest-pinned node:22.16.0-slim base, pinned pnpm via packageManager,
frozen-lockfile install, and (bot image only) Playwright Chromium with
its system libraries — browsers install inside node_modules
(PLAYWRIGHT_BROWSERS_PATH=0) so they ship with the app layer, the two
gaps that broke chart rendering on Railpack-style builders.

Verified locally per docker-ci-safety: both images build clean;
chromium.launch() succeeds in the built bot image; the runtime image
boots to listening. README gains a Deploying section (process table,
env vars, Railway notes).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 10:35:24 -07:00

18 lines
570 B
Docker

# Agent backend (runtime.ts): LLM + MCP served over AG-UI.
# No browser — chart/diagram rendering happens in the bot image.
FROM node:22.16.0-slim@sha256:048ed02c5fd52e86fda6fbd2f6a76cf0d4492fd6c6fee9e2c463ed5108da0e34
WORKDIR /app
ENV CI=true
RUN corepack enable && corepack prepare pnpm@10.13.1 --activate
# Layer-cache the install: manifests first, source after.
COPY package.json pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile
COPY . .
# Reads PORT (default 8200). Slack/LLM/MCP credentials come from the environment.
EXPOSE 8200
CMD ["pnpm", "runtime"]