services: personal-agent: build: context: . dockerfile: Dockerfile container_name: personal-agent restart: unless-stopped env_file: - .env command: [".venv/bin/uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"] ports: - "8000:8000" volumes: - ./${GOOGLE_CLIENT_SECRETS_FILE:-credentials.json}:/app/${GOOGLE_CLIENT_SECRETS_FILE:-credentials.json}:ro - ./${GOOGLE_TOKEN_FILE:-token.json}:/app/${GOOGLE_TOKEN_FILE:-token.json} - ./data:/app/data healthcheck: test: ["CMD", "curl", "-fsS", "http://127.0.0.1:8000/health"] interval: 30s timeout: 5s retries: 3 personal-agent-mcp: build: context: . dockerfile: Dockerfile container_name: personal-agent-mcp restart: unless-stopped env_file: - .env command: [".venv/bin/uvicorn", "app.mcp_main:app", "--host", "0.0.0.0", "--port", "8001"] ports: - "8001:8001" volumes: - ./${GOOGLE_CLIENT_SECRETS_FILE:-credentials.json}:/app/${GOOGLE_CLIENT_SECRETS_FILE:-credentials.json}:ro - ./${GOOGLE_TOKEN_FILE:-token.json}:/app/${GOOGLE_TOKEN_FILE:-token.json} - ./data:/app/data healthcheck: test: ["CMD", "python", "-c", "import socket;s=socket.create_connection(('127.0.0.1',8001),2);s.close()"] interval: 30s timeout: 5s retries: 3