From bed92c28e73898356e4bedbb7aa2ca1945cb3a7a Mon Sep 17 00:00:00 2001 From: Luke The Dev <252071647+iamlukethedev@users.noreply.github.com> Date: Sat, 4 Apr 2026 22:24:29 -0500 Subject: [PATCH] fix(docker): omit dev dependencies from runtime image (#84) Co-authored-by: Cursor Agent Co-authored-by: Luke The Dev --- Dockerfile | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..41f2df8 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,34 @@ +# Claw3D - 3D agent visualization for OpenClaw. +# Multi-stage build: install prod deps -> build Next.js -> run with custom server. + +FROM node:20-slim AS deps +WORKDIR /app +COPY package.json package-lock.json ./ +RUN npm ci --ignore-scripts --omit=dev + +FROM node:20-slim AS builder +WORKDIR /app +COPY package.json package-lock.json ./ +RUN npm ci --ignore-scripts +COPY . . +ENV NEXT_TELEMETRY_DISABLED=1 +# Build-time gateway URL (overridden at runtime by CLAW3D_GATEWAY_URL). +ENV NEXT_PUBLIC_GATEWAY_URL=ws://127.0.0.1:18789 +RUN npm run build + +FROM node:20-slim AS runner +WORKDIR /app +ENV NODE_ENV=production +ENV NEXT_TELEMETRY_DISABLED=1 + +# Copy built app + custom server + production node_modules only. +COPY --from=builder /app/.next ./.next +COPY --from=builder /app/public ./public +COPY --from=builder /app/server ./server +COPY --from=deps /app/node_modules ./node_modules +COPY --from=builder /app/package.json ./package.json +COPY --from=builder /app/next.config.ts ./next.config.ts + +EXPOSE 3000 + +CMD ["node", "server/index.js"]