Files
FastapiAdmin/docker-compose.yaml
T
zhangtao 4aa19d158a fix(redis): 为redis服务添加密码认证
添加REDIS_PASSWORD环境变量要求,增强redis服务的安全性
2026-03-08 21:43:10 +08:00

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