Files
zopu-code/packages/agents/Dockerfile
-Puter 4dc878b8cb fix(agents): bundle workspace deps into flue runtime
Replace @code/env and @code/primitives imports with local modules so
the Node deploy artifact does not resolve workspace packages to
TypeScript source at runtime. Switch Docker build to pnpm frozen
install, add runner Dockerfile and a liveness health endpoint.
2026-08-01 20:17:49 +05:30

49 lines
1.3 KiB
Docker

FROM oven/bun:1.3.14 AS bun
FROM node:24-bookworm-slim AS build
COPY --from=bun /usr/local/bin/bun /usr/local/bin/bun
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
g++ \
make \
python3 \
&& rm -rf /var/lib/apt/lists/*
# pnpm-lock.yaml is authoritative; Bun would migrate it and reject frozen mode.
RUN npm install --global pnpm@11.17.0
COPY . .
RUN pnpm install --frozen-lockfile
RUN node packages/agents/node_modules/@flue/cli/bin/flue.mjs build --target node --root packages/agents
FROM node:24-bookworm-slim
ENV NODE_ENV=production
ENV PORT=3000
WORKDIR /app
COPY --from=build /app /app
COPY --from=bun /usr/local/bin/bun /usr/local/bin/bun
# Attempt preparation occurs in the Flue handler: it clones repositories and
# installs their dependencies before the runner mounts the shared checkout.
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
git \
openssh-client \
&& rm -rf /var/lib/apt/lists/* \
&& groupadd --system --gid 10001 zopu \
&& useradd --system --uid 10001 --gid zopu --home-dir /nonexistent zopu \
&& mkdir -p /var/lib/zopu/workspaces \
&& chown -R zopu:zopu /app /var/lib/zopu
USER zopu
EXPOSE 3000
CMD ["node", "packages/agents/dist/server.mjs"]