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
|