2026-05-27 22:45:26 -04:00
|
|
|
FROM node:20-bookworm-slim
|
|
|
|
|
|
|
|
|
|
# Install build deps for native modules (node-pty, better-sqlite3, bcrypt)
|
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
|
|
|
build-essential python3 python3-setuptools \
|
|
|
|
|
jq ripgrep sqlite3 zip unzip tree vim-tiny curl git \
|
|
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
2026-05-27 23:38:51 -04:00
|
|
|
# Install Claude Code CLI and Taskmaster globally
|
|
|
|
|
RUN npm install -g @anthropic-ai/claude-code task-master-ai
|
2026-05-27 22:45:26 -04:00
|
|
|
|
2026-05-27 23:38:51 -04:00
|
|
|
WORKDIR /app
|
2026-05-27 22:45:26 -04:00
|
|
|
|
2026-05-27 23:42:11 -04:00
|
|
|
# Copy package files and scripts needed for postinstall hooks
|
2026-05-27 23:38:51 -04:00
|
|
|
COPY package*.json ./
|
2026-05-27 23:42:11 -04:00
|
|
|
COPY scripts/ ./scripts/
|
2026-05-27 23:38:51 -04:00
|
|
|
RUN npm ci
|
2026-05-27 22:45:26 -04:00
|
|
|
|
2026-05-27 23:38:51 -04:00
|
|
|
# VITE_ vars must be present at build time (baked into frontend bundle)
|
|
|
|
|
ARG FORGEJO_BASE_URL=https://forge.wilddragon.net
|
|
|
|
|
ENV VITE_FORGEJO_BASE_URL=${FORGEJO_BASE_URL}
|
|
|
|
|
|
|
|
|
|
# Copy source and build
|
|
|
|
|
COPY . .
|
|
|
|
|
RUN npm run build
|
|
|
|
|
|
2026-05-28 00:01:34 -04:00
|
|
|
# Create persistent data dirs and set ownership only on runtime-writable paths
|
2026-05-27 23:38:51 -04:00
|
|
|
RUN mkdir -p /home/node/workspace /home/node/.cloudcli /home/node/.claude \
|
2026-05-28 00:01:34 -04:00
|
|
|
&& chown -R node:node /home/node/
|
2026-05-27 22:45:26 -04:00
|
|
|
|
|
|
|
|
USER node
|
|
|
|
|
|
|
|
|
|
EXPOSE 3001
|
|
|
|
|
|
2026-05-27 23:38:51 -04:00
|
|
|
CMD ["node", "dist-server/server/index.js"]
|