Skip to content

Commit 0a742c9

Browse files
stubbiclaude
andcommitted
fix: copy full app to Docker production stage
The server uses tsx at runtime to transpile workspace TypeScript source files on the fly. Selective dist-only copy breaks because compiled server JS imports @paperclipai/db/src/index.ts etc. Copy the full built /app instead. Image size is still controlled by .dockerignore excluding tests, docs, desktop, and dev files. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent ce66612 commit 0a742c9

1 file changed

Lines changed: 3 additions & 41 deletions

File tree

Dockerfile

Lines changed: 3 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -80,47 +80,9 @@ RUN mkdir -p /paperclip && chown node:node /paperclip
8080

8181
WORKDIR /app
8282

83-
# Copy only production node_modules (rebuilt as prod-only in build stage)
84-
COPY --chown=node:node --from=build /app/node_modules ./node_modules
85-
COPY --chown=node:node --from=build /app/package.json /app/pnpm-workspace.yaml /app/.npmrc ./
86-
87-
# Server: only compiled output + runtime deps
88-
COPY --chown=node:node --from=build /app/server/dist ./server/dist
89-
COPY --chown=node:node --from=build /app/server/package.json ./server/
90-
COPY --chown=node:node --from=build /app/server/node_modules ./server/node_modules
91-
92-
# UI: only built static files
93-
COPY --chown=node:node --from=build /app/ui/dist ./ui/dist
94-
95-
# Shared packages: only dist output
96-
COPY --chown=node:node --from=build /app/packages/shared/dist ./packages/shared/dist
97-
COPY --chown=node:node --from=build /app/packages/shared/package.json ./packages/shared/
98-
COPY --chown=node:node --from=build /app/packages/db/dist ./packages/db/dist
99-
COPY --chown=node:node --from=build /app/packages/db/package.json ./packages/db/
100-
COPY --chown=node:node --from=build /app/packages/adapter-utils/dist ./packages/adapter-utils/dist
101-
COPY --chown=node:node --from=build /app/packages/adapter-utils/package.json ./packages/adapter-utils/
102-
COPY --chown=node:node --from=build /app/packages/plugins/sdk/dist ./packages/plugins/sdk/dist
103-
COPY --chown=node:node --from=build /app/packages/plugins/sdk/package.json ./packages/plugins/sdk/
104-
105-
# Adapters: only dist output
106-
COPY --chown=node:node --from=build /app/packages/adapters/claude-local/dist ./packages/adapters/claude-local/dist
107-
COPY --chown=node:node --from=build /app/packages/adapters/claude-local/package.json ./packages/adapters/claude-local/
108-
COPY --chown=node:node --from=build /app/packages/adapters/codex-local/dist ./packages/adapters/codex-local/dist
109-
COPY --chown=node:node --from=build /app/packages/adapters/codex-local/package.json ./packages/adapters/codex-local/
110-
COPY --chown=node:node --from=build /app/packages/adapters/cursor-local/dist ./packages/adapters/cursor-local/dist
111-
COPY --chown=node:node --from=build /app/packages/adapters/cursor-local/package.json ./packages/adapters/cursor-local/
112-
COPY --chown=node:node --from=build /app/packages/adapters/gemini-local/dist ./packages/adapters/gemini-local/dist
113-
COPY --chown=node:node --from=build /app/packages/adapters/gemini-local/package.json ./packages/adapters/gemini-local/
114-
COPY --chown=node:node --from=build /app/packages/adapters/openclaw-gateway/dist ./packages/adapters/openclaw-gateway/dist
115-
COPY --chown=node:node --from=build /app/packages/adapters/openclaw-gateway/package.json ./packages/adapters/openclaw-gateway/
116-
COPY --chown=node:node --from=build /app/packages/adapters/opencode-local/dist ./packages/adapters/opencode-local/dist
117-
COPY --chown=node:node --from=build /app/packages/adapters/opencode-local/package.json ./packages/adapters/opencode-local/
118-
COPY --chown=node:node --from=build /app/packages/adapters/pi-local/dist ./packages/adapters/pi-local/dist
119-
COPY --chown=node:node --from=build /app/packages/adapters/pi-local/package.json ./packages/adapters/pi-local/
120-
121-
# CLI
122-
COPY --chown=node:node --from=build /app/cli/dist ./cli/dist
123-
COPY --chown=node:node --from=build /app/cli/package.json ./cli/
83+
# Copy built app — tsx transpiles workspace TypeScript at runtime,
84+
# so source files must be present alongside dist output.
85+
COPY --chown=node:node --from=build /app /app
12486

12587
ENV NODE_ENV=production \
12688
HOME=/paperclip \

0 commit comments

Comments
 (0)