services: backend: build: context: ./backend dockerfile: Dockerfile container_name: spice-sibyl-backend env_file: - ./backend/.env ports: - "8800:8000" volumes: - /opt/data:/data:rw # Docker-out-of-Docker: lets the backend launch MCP servers defined as # `docker run …` as sibling containers on the host daemon. - /var/run/docker.sock:/var/run/docker.sock # GID of the host's `docker` group (owner of docker.sock) so the non-root # `app` user can access the socket. Adjust if your host differs: # stat -c '%g' /var/run/docker.sock group_add: - "319" command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/api/v1/ready')"] interval: 30s timeout: 5s start_period: 15s retries: 3 nginx: image: lordraw/spice-sibyl-nginx:latest container_name: spice-sibyl-nginx environment: API_URL: /api/v1 ports: - "8888:80" - "8443:443" volumes: - ./nginx/ssl:/etc/nginx/ssl:ro - ./certbot-www:/var/www/certbot:ro depends_on: backend: condition: service_healthy restart: unless-stopped # frontend: # build: # context: ./frontend # dockerfile: Dockerfile # container_name: spice-sibyl-frontend # environment: # API_URL: ${FRONTEND_API_URL:-http://localhost:8000/api/v1} # ports: # - "4200:4200" # volumes: # - ./frontend:/workspace:z # - /workspace/node_modules # depends_on: # - backend