services: web: build: . ports: - "8000:8000" environment: OPENAI_API_KEY: ${OPENAI_API_KEY} SCHEMANTIC_GITHUB_CLIENT_ID: ${SCHEMANTIC_GITHUB_CLIENT_ID} SCHEMANTIC_GITHUB_CLIENT_SECRET: ${SCHEMANTIC_GITHUB_CLIENT_SECRET} SCHEMANTIC_ADMIN_GITHUB_LOGIN: ${SCHEMANTIC_ADMIN_GITHUB_LOGIN} SCHEMANTIC_SESSION_SECRET: ${SCHEMANTIC_SESSION_SECRET} SCHEMANTIC_PUBLIC_BASE_URL: ${SCHEMANTIC_PUBLIC_BASE_URL} volumes: # enrichment cache, fetched datasheets, workspace.json, and the # chat-memory SQLite DB all live here -- a bind mount (not a named # volume) so it's the same directory `docker compose build` runs # next to, letting a deployment seed it directly (scp real enrichment # results in before first start) rather than needing `docker cp` into # an opaque Docker-managed volume. A container rebuild doesn't lose # it either way -- re-enriching a board costs real API spend. - ./.cache:/app/.cache restart: unless-stopped