mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-21 04:46:26 +00:00
103 lines
3.0 KiB
YAML
103 lines
3.0 KiB
YAML
# 应用服务
|
|
services:
|
|
# 数据库服务
|
|
mysql:
|
|
container_name: mysql
|
|
image: mysql:8.0
|
|
restart: always
|
|
environment:
|
|
TZ: "Asia/Shanghai"
|
|
MYSQL_ROOT_PASSWORD: "FastApi123abc"
|
|
MYSQL_DATABASE: "fastapiadmin"
|
|
MYSQL_PASSWORD: "FastApi123abc"
|
|
MYSQL_USER: "root"
|
|
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", "-pFastApi123abc"]
|
|
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"
|
|
REDIS_PASSWORD: "FastApi123abc"
|
|
ports:
|
|
- "6379:6379"
|
|
volumes:
|
|
# 挂载Redis配置文件,实现自定义配置
|
|
- ./devops/redis/data:/data
|
|
command: redis-server --requirepass ${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: "FastApi123abc"
|
|
REDIS_HOST: "redis"
|
|
REDIS_PASSWORD: "FastApi123abc"
|
|
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/dist:/usr/share/nginx/html/frontend
|
|
# 挂载H5dist目录,实现动态加载H5资源
|
|
- ./devops/nginx/fastapp/dist/build/h5:/usr/share/nginx/html/fastapp
|
|
# 挂载官网dist目录,实现动态加载文档资源
|
|
- ./devops/nginx/fastdocs/dist:/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
|