# --- Stage 1: Build Environment --- FROM node:24-slim AS builder RUN corepack enable && corepack prepare pnpm@10.33.2 --activate WORKDIR /app # Install build dependencies RUN apt-get update && apt-get install -y git python3 make g++ curl && rm -rf /var/lib/apt/lists/* # Clone the official repository RUN git clone https://github.com/nexu-io/open-design.git . RUN pnpm install --frozen-lockfile # Compile the packages RUN pnpm --filter @open-design/web build RUN pnpm --filter @open-design/daemon build # --- Stage 2: Production Runtime --- FROM node:24-slim ENV PNPM_HOME="/usr/local/bin" RUN corepack enable && corepack prepare pnpm@10.33.2 --activate RUN apt-get update && apt-get install -y git curl ca-certificates && rm -rf /var/lib/apt/lists/* # Install OpenCode CLI globally RUN npm install -g opencode-ai WORKDIR /app COPY --from=builder --chown=1000:1000 /app /app # Set up application folders RUN mkdir -p /app/.tmp /data/.opencode /data/designs /home/node/.config/opencode && \ chown -R 1000:1000 /app /data /home/node/.config # Seed the default config RUN echo '{"provider": "opencode-zen", "model": "big-pickle", "telemetry": false}' > /home/node/.config/opencode/opencode.json USER 1000 # --- THE FIX: Correct Env Vars --- ENV OD_HOST=0.0.0.0 ENV PORT=7860 ENV OD_PORT=7860 # Stop the browser from opening ENV BROWSER=none ENV NO_OPEN=true # Storage Dirs ENV DATA_DIR=/data ENV TMPDIR=/tmp ENV PATH="/usr/local/bin:/home/node/.local/bin:$PATH" EXPOSE 7860 # --- THE FIX: Correct Production Launch Command --- CMD ["pnpm", "tools-dev", "run", "--prod"]