services: init: image: ubuntu:24.04 command: ["sh", "-c", "mkdir -p /data/workspace /data/backups && chown -R 1000:1000 /data"] volumes: ["data:/data"] migrate: image: amman-v1-server command: ["node", "dist/migrate.js"] environment: DATA_DIR: /data volumes: ["data:/data"] depends_on: init: condition: service_completed_successfully restart: "no" server: image: amman-v1-server build: context: . dockerfile: docker/app.Dockerfile target: server env_file: - path: .env required: false environment: DATA_DIR: /data SERVER_PORT: 8787 SECRETS_KEY: ${SECRETS_KEY:-} PUBLIC_APP_URL: ${PUBLIC_APP_URL:-} XAI_API_KEY: ${XAI_API_KEY:-} ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-} OPENAI_API_KEY: ${OPENAI_API_KEY:-} AI_GATEWAY_API_KEY: ${AI_GATEWAY_API_KEY:-} WORKSPACE_STORE: ${WORKSPACE_STORE:-fs} S3_PROVIDER: ${S3_PROVIDER:-other} S3_ENDPOINT: ${S3_ENDPOINT:-} S3_REGION: ${S3_REGION:-us-east-1} S3_BUCKET: ${S3_BUCKET:-} S3_PREFIX: ${S3_PREFIX:-workspace/} S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID:-} S3_SECRET_ACCESS_KEY: ${S3_SECRET_ACCESS_KEY:-} S3_FORCE_PATH_STYLE: ${S3_FORCE_PATH_STYLE:-} volumes: ["data:/data"] restart: unless-stopped depends_on: migrate: condition: service_completed_successfully healthcheck: test: ["CMD", "node", "-e", "fetch('http://127.0.0.1:8787/api/ready').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"] interval: 30s timeout: 5s retries: 3 start_period: 20s web: build: context: . dockerfile: docker/app.Dockerfile target: web environment: PORT: 3001 PUBLIC_API_URL: http://server:8787 restart: unless-stopped depends_on: server: condition: service_healthy healthcheck: test: ["CMD", "node", "-e", "fetch('http://127.0.0.1:3001').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"] interval: 30s timeout: 5s retries: 3 gateway: image: caddy:2.10.2-alpine ports: ["3000:3000"] volumes: ["./docker/Caddyfile:/etc/caddy/Caddyfile:ro"] restart: unless-stopped depends_on: server: condition: service_healthy web: condition: service_healthy healthcheck: test: ["CMD-SHELL", "wget -q -O /dev/null http://127.0.0.1:3000/api/ready"] interval: 30s timeout: 5s retries: 3 volumes: data: name: superworkers-data