services: mqtt: image: eclipse-mosquitto:2 ports: - "${ANIMA_MQTT_PORT:-1883}:1883" volumes: - ./mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf healthcheck: test: ["CMD", "mosquitto_pub", "-h", "127.0.0.1", "-t", "anima/healthcheck", "-m", "ok"] interval: 5s timeout: 3s retries: 10 start_period: 5s restart: unless-stopped core: build: context: . dockerfile: Dockerfile ports: - "${ANIMA_API_PORT:-8080}:8080" volumes: - ./data:/app/data - ./skills:/app/skills environment: ANIMA_LLM_API_KEY: ${ANIMA_LLM_API_KEY:-} ANIMA_LLM_MODEL: ${ANIMA_LLM_MODEL:-gpt-4o} ANIMA_LLM_BASE_URL: ${ANIMA_LLM_BASE_URL:-} ANIMA_LLM_DISABLE_THINKING: ${ANIMA_LLM_DISABLE_THINKING:-false} ANIMA_XIAOMI_CLOUD_USER: ${ANIMA_XIAOMI_CLOUD_USER:-} ANIMA_XIAOMI_CLOUD_PASS: ${ANIMA_XIAOMI_CLOUD_PASS:-} ANIMA_API_HOST: 0.0.0.0 ANIMA_API_PORT: 8080 ANIMA_MQTT_HOST: mqtt ANIMA_MQTT_PORT: 1883 depends_on: mqtt: condition: service_healthy healthcheck: test: [ "CMD", "/app/.venv/bin/python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8080/health', timeout=3)", ] interval: 10s timeout: 5s retries: 6 start_period: 30s restart: unless-stopped dashboard: build: context: . dockerfile: dashboard/Dockerfile ports: - "${ANIMA_DASHBOARD_PORT:-3000}:80" depends_on: core: condition: service_healthy healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://127.0.0.1/health"] interval: 10s timeout: 5s retries: 6 start_period: 10s restart: unless-stopped