# Open Design — single-service deploy. The core process serves the SPA + /api, # compiles artifacts (Vite) and renders screenshots (Chromium) in-process. # # cp .env.deploy.example .env # add your OPENROUTER_API_KEY # docker compose up -d --build # # Put TLS / a domain in front separately (nginx, Caddy, Cloudflare) → :8787. services: open-design: build: . image: open-design:latest restart: unless-stopped init: true # reap Chromium child processes under PID 1 ports: - "8787:8787" env_file: - .env environment: NODE_ENV: production PORT: "8787" DATA_DIR: /app/data volumes: - open-design-data:/app/data healthcheck: test: - CMD - node - -e - "fetch('http://127.0.0.1:8787/api/projects').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))" interval: 30s timeout: 5s start_period: 20s retries: 3 volumes: open-design-data: