services: api-backend: build: . image: han-chat/api-backend:local expose: - "8000" environment: APP_ENV: ${APP_ENV} API_PORT: ${API_PORT:-8000} LOG_LEVEL: ${LOG_LEVEL:-INFO} DATABASE_URL: ${DATABASE_URL} REDIS_URL: ${REDIS_URL} REDIS_REALTIME_URL: ${REDIS_REALTIME_URL} KEYCLOAK_PUBLIC_URL: ${KEYCLOAK_PUBLIC_URL} KEYCLOAK_INTERNAL_URL: ${KEYCLOAK_INTERNAL_URL} KEYCLOAK_REALM: ${KEYCLOAK_REALM} KEYCLOAK_AUDIENCE: ${KEYCLOAK_AUDIENCE} MESSAGE_SAFETY_URL: ${MESSAGE_SAFETY_URL} MESSAGE_SAFETY_SERVICE_TOKEN: ${MESSAGE_SAFETY_SERVICE_TOKEN} MESSAGE_SAFETY_POST_TIMEOUT_SEC: ${MESSAGE_SAFETY_POST_TIMEOUT_SEC:-5} MESSAGE_SAFETY_TASK_POLL_INTERVAL_SEC: ${MESSAGE_SAFETY_TASK_POLL_INTERVAL_SEC:-2} MESSAGE_SAFETY_TASK_POLL_MAX_SEC: ${MESSAGE_SAFETY_TASK_POLL_MAX_SEC:-300} MESSAGE_SAFETY_CIRCUIT_FAILURE_THRESHOLD: ${MESSAGE_SAFETY_CIRCUIT_FAILURE_THRESHOLD:-5} MESSAGE_SAFETY_CIRCUIT_OPEN_SEC: ${MESSAGE_SAFETY_CIRCUIT_OPEN_SEC:-30} BITRIX_LOCAL_APP_BASE_URL: ${BITRIX_LOCAL_APP_BASE_URL} BITRIX_LOCAL_APP_INTERNAL_TOKEN: ${BITRIX_LOCAL_APP_INTERNAL_TOKEN} BITRIX_API_INBOX_TOKEN: ${BITRIX_API_INBOX_TOKEN} BITRIX_LOCAL_APP_HTTP_TIMEOUT_SEC: ${BITRIX_LOCAL_APP_HTTP_TIMEOUT_SEC:-20} BITRIX_LOCAL_APP_CIRCUIT_FAILURE_THRESHOLD: ${BITRIX_LOCAL_APP_CIRCUIT_FAILURE_THRESHOLD:-5} BITRIX_LOCAL_APP_CIRCUIT_OPEN_SEC: ${BITRIX_LOCAL_APP_CIRCUIT_OPEN_SEC:-30} KEYCLOAK_SETTINGS_BRIDGE_TOKEN: ${KEYCLOAK_SETTINGS_BRIDGE_TOKEN} SELECTEL_S3_ENDPOINT_URL: ${SELECTEL_S3_ENDPOINT_URL} SELECTEL_S3_BUCKET_DOCUMENTS: ${SELECTEL_S3_BUCKET_DOCUMENTS} SELECTEL_S3_BUCKET_ATTACHMENTS: ${SELECTEL_S3_BUCKET_ATTACHMENTS} SELECTEL_S3_BUCKET_QUARANTINE: ${SELECTEL_S3_BUCKET_QUARANTINE} SELECTEL_S3_ACCESS_KEY: ${SELECTEL_S3_ACCESS_KEY} SELECTEL_S3_SECRET_KEY: ${SELECTEL_S3_SECRET_KEY} OTEL_EXPORTER_OTLP_ENDPOINT: ${OTEL_EXPORTER_OTLP_ENDPOINT} CURSOR_HMAC_SECRET: ${CURSOR_HMAC_SECRET} NOTIFICATIONS_TOKEN_PRODUCER_TEST: ${NOTIFICATIONS_TOKEN_PRODUCER_TEST} healthcheck: test: - CMD - python - -c - "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health/live', timeout=2)" interval: 10s timeout: 3s retries: 5 restart: unless-stopped networks: - backend - observability networks: backend: observability: