# ============================================================================= # iAOP · FBA(fastapi-best-architecture)最小化部署编排 # Epic issue #159 · Phase 0 基础设施 # # 只包含 iAOP 需要的 3 个服务:fba_server / fba_postgres / fba_redis。 # 已移除 FBA 官方 compose 中的 celery / rabbitmq / nginx / 监控组件 # (iAOP 无定时任务需求,对外由宿主机现有 nginx 统一反代)。 # # 前置条件: # 1. 宿主机安装 Docker + Docker Compose 插件 # 2. 将 FBA 源码克隆到本仓库的同级目录: # git clone https://github.com/fastapi-practices/fastapi-best-architecture ../fba-backend # 或通过环境变量 FBA_SRC 指定其他路径(见下) # 3. 按 fba.env 模板填写配置(务必更换 TOKEN_SECRET_KEY 与数据库密码) # # 启动: # cd deploy/fba # docker compose --env-file compose.env up -d --build # # 停止: # docker compose --env-file compose.env down # ============================================================================= networks: fba_network: name: fba_network driver: bridge volumes: fba_postgres: name: fba_postgres fba_redis: name: fba_redis fba_static: name: fba_static fba_static_upload: name: fba_static_upload services: # FBA 后端 API 服务(FastAPI + Casbin RBAC) fba_server: build: # FBA 源码根目录(含其官方 Dockerfile)。默认取 iAOP 仓库同级目录 fba-backend, # 可通过 compose.env 中的 FBA_SRC 覆盖。 context: ${FBA_SRC:-../../../fba-backend} dockerfile: Dockerfile image: fba_server:latest container_name: fba_server restart: always environment: - TZ=Asia/Shanghai ports: # 仅绑定回环地址:不直接对外,由宿主机 nginx 以 /fba/ 前缀反代 - "127.0.0.1:${DOCKER_MAP_SERVER_PORT:-8001}:8001" depends_on: - fba_postgres - fba_redis volumes: # 用本目录下的 fba.env 作为 FBA 后端配置,避免改动 FBA 源码树 - ./fba.env:/fba/backend/.env:ro - fba_static:/fba/backend/app/static - fba_static_upload:/fba/backend/static/upload - ./logs/fba:/var/log/fba networks: - fba_network # 等待数据库与缓存就绪后再启动 supervisord(复用官方启动方式) command: - bash - -c - | wait-for-it -s fba_postgres:5432 -s fba_redis:6379 -t 300 supervisord -c /etc/supervisor/supervisord.conf supervisorctl restart # PostgreSQL 16:FBA 的数据库(用户/角色/菜单/Casbin 规则等) fba_postgres: image: postgres:16 container_name: fba_postgres restart: always environment: POSTGRES_DB: fba # 必须与 fba.env 中 DATABASE_PASSWORD 一致 POSTGRES_PASSWORD: ${FBA_PG_PASSWORD:-123456} TZ: Asia/Shanghai # 不映射宿主端口,仅 fba_network 内可达 volumes: - fba_postgres:/var/lib/postgresql/data networks: - fba_network # Redis:Token 黑名单、验证码、限流 fba_redis: image: redis:latest container_name: fba_redis restart: always environment: - TZ=Asia/Shanghai # 不映射宿主端口,仅 fba_network 内可达 volumes: - fba_redis:/data networks: - fba_network