Files
FastapiAdmin/docker-compose_example.yaml
T
zhangtao 9d1ad8d9d5 refactor(docker): 修改nginx挂载路径以直接使用源码目录
将前端、H5和文档的挂载路径从dist目录改为源码目录,便于开发时直接查看修改效果
2026-03-15 04:16:14 +08:00

102 lines
3.0 KiB
YAML

# 应用服务
services:
# 数据库服务
mysql:
container_name: mysql
image: mysql:8.0
restart: always
environment:
TZ: "Asia/Shanghai"
MYSQL_ROOT_PASSWORD: "your_mysql_root_password"
MYSQL_DATABASE: "fastapiadmin"
MYSQL_PASSWORD: "your_mysql_password"
MYSQL_USER: "fastapiadmin"
MYSQL_TZINFO_TO_SYS_TABLES: 1 # 初始化MySQL时区表,解决时差问题
ports:
- "3306:3306"
volumes:
# 挂载数据卷,持久化MySQL数据(docker-compose down不会删除数据)
- ./devops/mysql/data:/var/lib/mysql
# 挂载宿主机时区文件,双重保障时区同步(只读,避免容器修改)
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
networks:
- app_network
# 健康检查:检测MySQL是否真正就绪,避免后端启动早于MySQL
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-pyour_mysql_root_password"]
interval: 5s # 每5秒检测一次
timeout: 30s # 超时时间30秒
retries: 10 # 重试10次,失败则认为容器未就绪
start_period: 20s # 容器启动后,延迟20秒开始检测
# redis服务
redis:
container_name: redis
image: redis:7.0
restart: always
environment:
TZ: "Asia/Shanghai"
ports:
- "6379:6379"
volumes:
# 挂载Redis配置文件,实现自定义配置
- ./devops/redis/data:/data
command: redis-server --requirepass your_redis_password
networks:
- app_network
# 后端服务
backend:
container_name: backend
build:
context: ./
dockerfile: ./devops/backend/Dockerfile
image: backend:latest
restart: always
environment:
TZ: "Asia/Shanghai"
DATABASE_HOST: "mysql"
DATABASE_PASSWORD: "your_mysql_password"
REDIS_HOST: "redis"
REDIS_PASSWORD: "your_redis_password"
ports:
- "8001:8001"
volumes:
- ./backend:/home
depends_on:
- mysql
- redis
networks:
- app_network
# 前端nginx服务
nginx:
container_name: nginx
image: nginx:latest
restart: always
environment:
TZ: "Asia/Shanghai"
ports:
- "80:80"
- "443:443"
volumes:
- ./devops/nginx/nginx.conf:/etc/nginx/nginx.conf
# 挂载前端dist目录,实现动态加载前端资源
- ./devops/nginx/frontend:/usr/share/nginx/html/frontend
# 挂载H5dist目录,实现动态加载H5资源
- ./devops/nginx/fastapp:/usr/share/nginx/html/fastapp
# 挂载官网dist目录,实现动态加载文档资源
- ./devops/nginx/fastdocs:/usr/share/nginx/html/fastdocs
# ssl 证书,如果无证书则注释这行,并在nginx.conf中注释ssl相关配置
- ./devops/nginx/ssl:/etc/nginx/ssl:ro
depends_on:
- backend
networks:
- app_network
# 网络
networks:
app_network:
driver: bridge