Spaces:
Paused
Paused
| # --- 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"] |