2026-05-25 16:59:59 +08:00
|
|
|
|
# HSAP — Huaxu Sentinel Active Safety Platform
|
2026-06-15 17:25:28 +08:00
|
|
|
|
# 用法:
|
|
|
|
|
|
# docker compose up -d # 仅平台
|
|
|
|
|
|
# docker compose -f docker-compose.yml -f docker-compose.cvat.yml up -d # 平台 + CVAT 标注引擎
|
2026-05-25 16:59:59 +08:00
|
|
|
|
|
|
|
|
|
|
name: hsap
|
|
|
|
|
|
|
|
|
|
|
|
x-platform-env: &platform-env
|
|
|
|
|
|
AS_DB_HOST: postgres
|
|
|
|
|
|
AS_DB_PORT: "5432"
|
|
|
|
|
|
AS_DB_USER: as_platform
|
|
|
|
|
|
AS_DB_PASSWORD: as_platform
|
|
|
|
|
|
AS_DB_NAME: as_platform
|
|
|
|
|
|
AS_REDIS_URL: redis://redis:6379/0
|
|
|
|
|
|
AS_JOB_EXECUTOR: worker
|
|
|
|
|
|
AS_DEV_AUTH: "true"
|
2026-06-03 11:40:21 +08:00
|
|
|
|
AS_FORCE_DEV_AUTH: "true"
|
2026-05-25 16:59:59 +08:00
|
|
|
|
AS_JWT_SECRET: dev-docker-secret
|
|
|
|
|
|
AS_FRONTEND_URL: http://127.0.0.1:8787
|
|
|
|
|
|
FEISHU_REDIRECT_URI: http://127.0.0.1:8787/api/v1/auth/feishu/callback
|
2026-06-03 11:40:21 +08:00
|
|
|
|
# 容器内 workspace 挂载点(宿主机路径由 compose volumes 的 AS_WORKSPACE_ROOT 决定)
|
|
|
|
|
|
AS_WORKSPACE_ROOT: /data/workspace
|
2026-06-15 17:25:28 +08:00
|
|
|
|
AS_DATA_LAKE_ROOT: /data/data
|
|
|
|
|
|
# CVAT 标注引擎(合并 docker-compose.cvat.yml 时生效;无需 CVAT 账号)
|
|
|
|
|
|
CVAT_HOST: ${CVAT_HOST:-http://hsap-cvat-server:8080}
|
|
|
|
|
|
CVAT_PUBLIC_URL: ${CVAT_PUBLIC_URL:-http://127.0.0.1:8080}
|
2026-05-25 16:59:59 +08:00
|
|
|
|
|
|
|
|
|
|
x-platform-volumes: &platform-volumes
|
|
|
|
|
|
- .:/data/hsap
|
|
|
|
|
|
- ${AS_WORKSPACE_ROOT:-./.workspace-stub}:/data/workspace:ro
|
2026-06-15 17:25:28 +08:00
|
|
|
|
- ${AS_DATA_LAKE_HOST:-../data}:/data/data
|
2026-05-25 16:59:59 +08:00
|
|
|
|
|
|
|
|
|
|
services:
|
|
|
|
|
|
postgres:
|
|
|
|
|
|
image: postgres:16-alpine
|
|
|
|
|
|
container_name: hsap-postgres
|
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
environment:
|
|
|
|
|
|
POSTGRES_USER: as_platform
|
|
|
|
|
|
POSTGRES_PASSWORD: as_platform
|
|
|
|
|
|
POSTGRES_DB: as_platform
|
|
|
|
|
|
ports:
|
|
|
|
|
|
- "${AS_DB_PORT:-5432}:5432"
|
|
|
|
|
|
volumes:
|
|
|
|
|
|
- hsap_pgdata:/var/lib/postgresql/data
|
|
|
|
|
|
healthcheck:
|
|
|
|
|
|
test: ["CMD-SHELL", "pg_isready -U as_platform -d as_platform"]
|
|
|
|
|
|
interval: 5s
|
|
|
|
|
|
timeout: 5s
|
|
|
|
|
|
retries: 8
|
2026-06-15 17:25:28 +08:00
|
|
|
|
networks:
|
|
|
|
|
|
default:
|
|
|
|
|
|
aliases:
|
|
|
|
|
|
- postgres
|
2026-05-25 16:59:59 +08:00
|
|
|
|
|
|
|
|
|
|
redis:
|
|
|
|
|
|
image: redis:7-alpine
|
|
|
|
|
|
container_name: hsap-redis
|
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
ports:
|
|
|
|
|
|
- "${AS_REDIS_PORT:-6379}:6379"
|
|
|
|
|
|
volumes:
|
|
|
|
|
|
- hsap_redis:/data
|
|
|
|
|
|
healthcheck:
|
|
|
|
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
|
|
|
|
interval: 5s
|
|
|
|
|
|
timeout: 3s
|
|
|
|
|
|
retries: 8
|
2026-06-15 17:25:28 +08:00
|
|
|
|
networks:
|
|
|
|
|
|
default:
|
|
|
|
|
|
aliases:
|
|
|
|
|
|
- redis
|
2026-05-25 16:59:59 +08:00
|
|
|
|
|
|
|
|
|
|
platform:
|
|
|
|
|
|
build:
|
|
|
|
|
|
context: .
|
|
|
|
|
|
dockerfile: Dockerfile
|
|
|
|
|
|
container_name: hsap-platform
|
|
|
|
|
|
restart: unless-stopped
|
2026-06-03 11:40:21 +08:00
|
|
|
|
env_file:
|
|
|
|
|
|
- manifests/feishu.env
|
2026-05-25 16:59:59 +08:00
|
|
|
|
ports:
|
|
|
|
|
|
- "${AS_PLATFORM_PORT:-8787}:8787"
|
|
|
|
|
|
environment:
|
|
|
|
|
|
<<: *platform-env
|
|
|
|
|
|
volumes: *platform-volumes
|
|
|
|
|
|
depends_on:
|
|
|
|
|
|
postgres:
|
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
|
redis:
|
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
|
|
|
|
|
|
|
worker:
|
|
|
|
|
|
build:
|
|
|
|
|
|
context: .
|
|
|
|
|
|
dockerfile: Dockerfile
|
|
|
|
|
|
container_name: hsap-worker
|
|
|
|
|
|
restart: unless-stopped
|
2026-06-03 11:40:21 +08:00
|
|
|
|
env_file:
|
|
|
|
|
|
- manifests/feishu.env
|
2026-05-25 16:59:59 +08:00
|
|
|
|
environment:
|
|
|
|
|
|
<<: *platform-env
|
|
|
|
|
|
volumes: *platform-volumes
|
|
|
|
|
|
command: ["python", "scripts/worker.py"]
|
|
|
|
|
|
depends_on:
|
|
|
|
|
|
platform:
|
|
|
|
|
|
condition: service_started
|
|
|
|
|
|
postgres:
|
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
|
redis:
|
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
|
|
2026-06-03 11:40:21 +08:00
|
|
|
|
# 可选:S3 兼容暂存(联调)— docker compose --profile minio up -d
|
|
|
|
|
|
minio:
|
|
|
|
|
|
image: minio/minio:latest
|
|
|
|
|
|
container_name: hsap-minio
|
|
|
|
|
|
profiles: ["minio"]
|
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
command: server /data --console-address ":9001"
|
2026-05-25 16:59:59 +08:00
|
|
|
|
environment:
|
2026-06-03 11:40:21 +08:00
|
|
|
|
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin}
|
|
|
|
|
|
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin_change_me}
|
|
|
|
|
|
ports:
|
|
|
|
|
|
- "${MINIO_API_PORT:-9000}:9000"
|
|
|
|
|
|
- "${MINIO_CONSOLE_PORT:-9001}:9001"
|
2026-05-25 16:59:59 +08:00
|
|
|
|
volumes:
|
2026-06-03 11:40:21 +08:00
|
|
|
|
- hsap_minio_data:/data
|
|
|
|
|
|
healthcheck:
|
|
|
|
|
|
test: ["CMD", "curl", "-f", "http://127.0.0.1:9000/minio/health/live"]
|
|
|
|
|
|
interval: 15s
|
|
|
|
|
|
timeout: 5s
|
|
|
|
|
|
retries: 5
|
|
|
|
|
|
start_period: 15s
|
|
|
|
|
|
|
|
|
|
|
|
minio-init:
|
|
|
|
|
|
image: minio/mc:latest
|
|
|
|
|
|
container_name: hsap-minio-init
|
|
|
|
|
|
profiles: ["minio"]
|
2026-05-25 16:59:59 +08:00
|
|
|
|
depends_on:
|
2026-06-03 11:40:21 +08:00
|
|
|
|
minio:
|
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
|
environment:
|
|
|
|
|
|
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin}
|
|
|
|
|
|
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin_change_me}
|
|
|
|
|
|
MINIO_BUCKET: ${MINIO_BUCKET:-hsap-staging}
|
|
|
|
|
|
entrypoint: >
|
|
|
|
|
|
/bin/sh -c "
|
|
|
|
|
|
mc alias set local http://minio:9000 $$MINIO_ROOT_USER $$MINIO_ROOT_PASSWORD &&
|
|
|
|
|
|
mc mb -p local/$$MINIO_BUCKET || true &&
|
|
|
|
|
|
mc anonymous set download local/$$MINIO_BUCKET || true
|
|
|
|
|
|
"
|
|
|
|
|
|
restart: "no"
|
2026-05-25 16:59:59 +08:00
|
|
|
|
|
|
|
|
|
|
volumes:
|
|
|
|
|
|
hsap_pgdata:
|
|
|
|
|
|
hsap_redis:
|
2026-06-03 11:40:21 +08:00
|
|
|
|
hsap_minio_data:
|