Files
iAOP/deploy/fba/docker-compose.yml

103 lines
3.3 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# =============================================================================
# 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