Repository navigation
Expand file tree
/
Copy pathdocker-compose.server.yml
More file actions
105 lines (99 loc) · 3.36 KB
/
Copy pathdocker-compose.server.yml
File metadata and controls
105 lines (99 loc) · 3.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# ============================================
# 生产环境 docker-compose (无构建版)
# ============================================
# 前提: 前端 dist/ 已经编译好(在本地 Mac 执行 npm run build:docker)
# 服务器只需: docker compose -f docker-compose.server.yml up -d
# 不需要 --build,服务器不编译任何东西
services:
# -----------------------------------------
# 前端服务(预编译静态资源,只 serve)
# -----------------------------------------
ruoyi-frontend:
build:
context: ./ruoyi-fastapi-frontend
dockerfile: Dockerfile.prod # 使用生产版 Dockerfile
image: ruoyi-frontend:prod
container_name: ruoyi-frontend
networks:
- ruoyi-network
labels:
- "traefik.enable=true"
- "traefik.http.routers.frontend.rule=Host(`meowquant.site`)"
- "traefik.http.routers.frontend.entrypoints=websecure"
- "traefik.http.routers.frontend.tls.certresolver=letsencrypt"
- "traefik.http.routers.frontend.priority=10"
restart: unless-stopped
# -----------------------------------------
# 后端服务(已在本地 build 好了,服务器只运行)
# -----------------------------------------
ruoyi-backend-my:
build:
context: ./ruoyi-fastapi-backend
dockerfile: Dockerfile.my
image: ruoyi-backend-my:latest
container_name: ruoyi-backend-my
depends_on:
ruoyi-mysql:
condition: service_healthy
ruoyi-redis:
condition: service_healthy
networks:
- ruoyi-network
labels:
- "traefik.enable=true"
- "traefik.http.routers.backend.rule=Host(`meowquant.site`) && PathPrefix(`/api`)"
- "traefik.http.routers.backend.entrypoints=websecure"
- "traefik.http.routers.backend.tls.certresolver=letsencrypt"
- "traefik.http.routers.backend.middlewares=backend-stripprefix"
- "traefik.http.routers.backend.priority=20"
- "traefik.http.middlewares.backend-stripprefix.stripprefix.prefixes=/api"
restart: unless-stopped
# -----------------------------------------
# MySQL 8.0
# -----------------------------------------
ruoyi-mysql:
image: mysql:8.0
container_name: ruoyi-mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: ruoyi-fastapi
volumes:
- ./ruoyi-fastapi-backend/sql/00-bootstrap.sql:/docker-entrypoint-initdb.d/00-bootstrap.sql
- ./mysql-conf/charset.cnf:/etc/mysql/conf.d/charset.cnf:ro
- mysql-data:/var/lib/mysql
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --skip-character-set-client-handshake=1
networks:
- ruoyi-network
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-proot"]
interval: 5s
timeout: 10s
retries: 30
restart: unless-stopped
# -----------------------------------------
# Redis
# -----------------------------------------
ruoyi-redis:
image: redis:latest
container_name: ruoyi-redis
volumes:
- redis-data:/data
networks:
- ruoyi-network
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 10s
retries: 30
restart: unless-stopped
# 网络配置
networks:
ruoyi-network:
name: ruoyi-network
driver: bridge
# 数据持久化
volumes:
mysql-data:
name: smart-ops-mysql-data
redis-data:
name: smart-ops-redis-data