services: postgres: image: postgres:16-alpine environment: POSTGRES_DB: nail_ai POSTGRES_USER: user POSTGRES_PASSWORD: password volumes: - postgres_data:/var/lib/postgresql/data redis: image: redis:7-alpine openclaw: build: context: . dockerfile: services/openclaw/Dockerfile env_file: - .env environment: OPENCLAW_STATE_DIR: /workspace/.openclaw/state OPENCLAW_CONFIG_PATH: /workspace/.openclaw/openclaw.json ports: - "127.0.0.1:18798:18798" volumes: - ./.openclaw:/workspace/.openclaw api: build: context: . dockerfile: services/api/Dockerfile env_file: - .env depends_on: - postgres - redis - openclaw ports: - "127.0.0.1:8000:8000" volumes: - ./services/api/app:/workspace/services/api/app - ./.openclaw:/workspace/.openclaw - ./data:/workspace/data ops-web: build: context: . dockerfile: apps/ops-web/Dockerfile depends_on: - api environment: VITE_API_BASE_URL: /api/v1 VITE_API_PROXY_TARGET: http://api:8000 ports: - "127.0.0.1:4173:4173" volumes: postgres_data: