refactor(devops): 重构 Docker 配置和目录结构

- 移除旧的 `Dockerfile` 和 `nginx.conf`,新增独立的 `frontend` 和 `backend` Dockerfile
- 更新 `docker-compose.yaml`,简化服务配置并优化网络和卷挂载
- 移除 `start.sh` 和 `stop.sh` 脚本,简化部署流程
- 将环境配置文件移动到 `backend/env` 目录,并移除旧的 `.env` 文件
- 更新 `backend/app/config/setting.py` 以适配新的环境配置文件路径
This commit is contained in:
zhangtao
2025-05-17 01:34:52 +08:00
parent 5eaf16631c
commit e1d7d27967
15 changed files with 171 additions and 339 deletions
+63 -73
View File
@@ -1,106 +1,96 @@
version: "3.10.11"
version: "3.0"
# 应用服务
services:
# 前端服务
frontend:
container_name: frontend
build:
context: .
dockerfile: frontend/Dockerfile
# 数据库服务
mysql:
container_name: mysql
image: mysql:8.0
restart: always
environment:
- MYSQL_ROOT_PASSWORD=123456
- TZ=Asia/Shanghai
ports:
- "80:80"
depends_on:
- backend
- "3306:3306"
volumes:
- /home/mysql/data:/var/lib/mysql
- /home/mysql/conf:/etc/mysql/conf
- /home/mysql/logs:/logs
- /etc/localtime:/etc/localtime:ro
# 让容器的时钟与宿主机时钟同步,避免时间的问题,ro(read only),表示只读。
networks:
- app-network
- mysql_network
# redis服务
redis:
container_name: redis
image: redis:6
restart: always
ports:
- "6379:6379"
volumes:
- /home/redis/redis.conf:/etc/redis/redis.conf:rw
- /home/redis/data:/data:rw
- /home/redis/logs:/logs:rw
command: redis-server /etc/redis/redis.conf
networks:
- redis_network
# 后端服务
backend:
# 容器名称
container_name: backend
# 构建镜像
build:
context: .
dockerfile: build/Dockerfile
context: ./backend
dockerfile: Dockerfile
# 端口映射
ports:
- "8000:8000"
environment:
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_USER=root
- MYSQL_PASSWORD=123456
- MYSQL_DATABASE=fastapi_admin
- REDIS_HOST=redis
- REDIS_PORT=6379
- MONGODB_URL=mongodb://mongodb:27017/
volumes:
- /home/backend/static:/home/backend/static
- /home/backend/logs:/home/backend/logs
- /home/backend/env:/home/backend/env
- /etc/localtime:/etc/localtime:ro
networks:
- backend-network
restart: always
depends_on:
- mysql
- redis
- mongodb
networks:
- app-network
restart: always
# 数据库服务
mysql:
container_name: mysql
image: mysql:8.0
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=fastapi_admin
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
networks:
- app-network
# redis服务
redis:
container_name: redis
image: redis:latest
ports:
- "6379:6379"
volumes:
- redis_data:/data
networks:
- app-network
# mongodb服务
mongodb:
container_name: mongodb
image: mongo:latest
ports:
- "27017:27017"
volumes:
- mongodb_data:/data/db
networks:
- app-network
# nginx服务
nginx:
# 前端服务nginx服务
frontend:
container_name: nginx
restart: always
image: "nginx:latest"
restart: always
build:
context: ./frontend
dockerfile: Dockerfile
ports:
- "5000:5000"
- "80:80"
volumes:
- ./nginx:/etc/nginx/conf.d
- /home/frontend/nginx/conf:/etc/nginx/conf
- /home/frontend/nginx/dist:/usr/share/nginx/html
networks:
- web_network
- frontend_network
depends_on:
- flask_api
- backend
# 网络
networks:
db_network:
mysql_network:
driver: bridge
web_network:
name: mysql_network
redis_network:
driver: bridge
app-network:
name: redis_network
frontend_network:
driver: bridge
name: frontend_network
backend-network:
driver: bridge
name: backend-network
# 文件挂载
volumes: