120 lines
5.4 KiB
YAML
120 lines
5.4 KiB
YAML
# OpenWork evaluation stack — pull-only, no repository clone or build:
|
|
#
|
|
# umask 077
|
|
# printf 'OPENWORK_AUTH_SECRET=%s\nOPENWORK_DB_ENCRYPTION_KEY=%s\n' \
|
|
# "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
|
|
# docker compose -f docker-compose.eval.yml up -d --wait
|
|
#
|
|
# Then open http://localhost:3005 and sign up.
|
|
#
|
|
# No repo clone, no build, no launcher script. Uses the published GHCR images.
|
|
# NOT a production posture: dev-grade MySQL credentials, stub worker provisioner,
|
|
# no cloud sandboxes, no email delivery, public signup enabled by default.
|
|
#
|
|
# Required secrets:
|
|
# OPENWORK_AUTH_SECRET Better Auth secret (at least 32 random characters)
|
|
# OPENWORK_DB_ENCRYPTION_KEY Den DB encryption key (at least 32 random characters)
|
|
#
|
|
# Optional knobs:
|
|
# OPENWORK_WEB_PORT host port for the web app (default: 3005)
|
|
# OPENWORK_API_PORT host port for the Den API (default: 8788)
|
|
# OPENWORK_ALLOW_SIGNUP allow public signup for evaluation (default: true)
|
|
# OPENWORK_ORG_NAME single organization name (default: OpenWork Evaluation)
|
|
|
|
name: openwork-eval
|
|
|
|
services:
|
|
mysql:
|
|
image: mysql:8.4@sha256:b3b90af2a6552ae30c266fdb7d5dd55f3afb72404bb78d37fe8a23eb857fd3fb
|
|
command:
|
|
- --performance_schema=OFF
|
|
- --innodb-buffer-pool-size=128M
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: password
|
|
MYSQL_DATABASE: openwork_den
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -ppassword --silent"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 30
|
|
start_period: 10s
|
|
volumes:
|
|
- openwork-eval-mysql:/var/lib/mysql
|
|
# intentionally no host port: MySQL stays internal to the compose network
|
|
|
|
den-migrate:
|
|
image: ghcr.io/different-ai/openwork-den-api:0.18.37@sha256:5ae1fab94ae2badd49ae74649cfb38ca679a7afc7e9ae8926c927553a34caabd
|
|
depends_on:
|
|
mysql:
|
|
condition: service_healthy
|
|
restart: "no"
|
|
entrypoint: ["sh", "-lc"]
|
|
command: ["cd /app/ee/packages/den-db && (node ./dist/scripts/bootstrap.js || node --import tsx ./dist/scripts/bootstrap.js)"]
|
|
environment:
|
|
DATABASE_URL: mysql://root:password@mysql:3306/openwork_den
|
|
DEN_DB_ENCRYPTION_KEY: ${OPENWORK_DB_ENCRYPTION_KEY:?Set OPENWORK_DB_ENCRYPTION_KEY to at least 32 random characters}
|
|
|
|
den:
|
|
image: ghcr.io/different-ai/openwork-den-api:0.18.37@sha256:5ae1fab94ae2badd49ae74649cfb38ca679a7afc7e9ae8926c927553a34caabd
|
|
restart: unless-stopped
|
|
depends_on:
|
|
mysql:
|
|
condition: service_healthy
|
|
den-migrate:
|
|
condition: service_completed_successfully
|
|
ports:
|
|
- "127.0.0.1:${OPENWORK_API_PORT:-8788}:8788"
|
|
healthcheck:
|
|
test: ["CMD", "node", "-e", "fetch('http://127.0.0.1:8788/health').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 30
|
|
start_period: 60s
|
|
environment:
|
|
PORT: "8788"
|
|
DATABASE_URL: mysql://root:password@mysql:3306/openwork_den
|
|
BETTER_AUTH_SECRET: ${OPENWORK_AUTH_SECRET:?Set OPENWORK_AUTH_SECRET to at least 32 random characters}
|
|
DEN_DB_ENCRYPTION_KEY: ${OPENWORK_DB_ENCRYPTION_KEY:?Set OPENWORK_DB_ENCRYPTION_KEY to at least 32 random characters}
|
|
BETTER_AUTH_URL: http://localhost:${OPENWORK_WEB_PORT:-3005}
|
|
DEN_ORG_MODE: single_org
|
|
DEN_SINGLE_ORG_NAME: ${OPENWORK_ORG_NAME:-OpenWork Evaluation}
|
|
DEN_SINGLE_ORG_SLUG: default
|
|
DEN_SINGLE_ORG_ALLOW_PUBLIC_SIGNUP: ${OPENWORK_ALLOW_SIGNUP:-true}
|
|
DEN_REQUIRE_EMAIL_VERIFICATION: "false"
|
|
DEN_API_PUBLIC_URL: http://localhost:${OPENWORK_API_PORT:-8788}
|
|
DEN_MCP_RESOURCE_URL: http://localhost:${OPENWORK_API_PORT:-8788}/mcp
|
|
CORS_ORIGINS: http://localhost:${OPENWORK_WEB_PORT:-3005},http://127.0.0.1:${OPENWORK_WEB_PORT:-3005},http://localhost:${OPENWORK_API_PORT:-8788},http://127.0.0.1:${OPENWORK_API_PORT:-8788}
|
|
DEN_BETTER_AUTH_TRUSTED_ORIGINS: http://localhost:${OPENWORK_WEB_PORT:-3005},http://127.0.0.1:${OPENWORK_WEB_PORT:-3005},http://localhost:${OPENWORK_API_PORT:-8788},http://127.0.0.1:${OPENWORK_API_PORT:-8788}
|
|
PROVISIONER_MODE: stub
|
|
WORKER_URL_TEMPLATE: https://workers.local/{workerId}
|
|
|
|
web:
|
|
image: ghcr.io/different-ai/openwork-den-web:0.18.37@sha256:9ca96fb73bc3512852409f1508876e418cd56f6d5187ff4e0c683f5b69a2dda3
|
|
restart: unless-stopped
|
|
depends_on:
|
|
den:
|
|
condition: service_healthy
|
|
ports:
|
|
- "127.0.0.1:${OPENWORK_WEB_PORT:-3005}:3005"
|
|
healthcheck:
|
|
test: ["CMD", "node", "-e", "fetch('http://127.0.0.1:3005/api/health').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"]
|
|
interval: 5s
|
|
timeout: 10s
|
|
retries: 30
|
|
start_period: 60s
|
|
environment:
|
|
# Browser-reachable API origin (what runtime-config hands to clients).
|
|
DEN_API_BASE: http://localhost:${OPENWORK_API_PORT:-8788}
|
|
# Container-internal fallback for server-side calls.
|
|
DEN_AUTH_FALLBACK_BASE: http://den:8788
|
|
DEN_AUTH_ORIGIN: http://localhost:${OPENWORK_WEB_PORT:-3005}
|
|
DEN_WEB_PUBLIC_ORIGIN: http://localhost:${OPENWORK_WEB_PORT:-3005}
|
|
DEN_WEB_OPENWORK_AUTH_CALLBACK_URL: http://localhost:${OPENWORK_WEB_PORT:-3005}
|
|
DEN_ORG_MODE: single_org
|
|
DEN_SINGLE_ORG_NAME: ${OPENWORK_ORG_NAME:-OpenWork Evaluation}
|
|
DEN_SINGLE_ORG_SLUG: default
|
|
DEN_SINGLE_ORG_ALLOW_PUBLIC_SIGNUP: ${OPENWORK_ALLOW_SIGNUP:-true}
|
|
|
|
volumes:
|
|
openwork-eval-mysql:
|