feat: Phase 0 FBA 部署包——docker-compose + nginx 反代 + env 模板(issue #159)
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
# =============================================================================
|
||||
# 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
|
||||
Reference in New Issue
Block a user