103 lines
3.3 KiB
YAML
103 lines
3.3 KiB
YAML
# =============================================================================
|
||||
|
|
# 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
|