# dev
需求场景
现在我需要用 docker compose 来部署
- mysql8(3306 端口)username=root,password=123456
- mongodb(无密码,27017端口)
- redis6(无密码,6379端口)、
- rabbitmq v.3.12.6(5672端口 password: guest,username:guest)、
- nacos2.2.0(8848端口);
还有4个本地的springboot服务(名称分别为:
- yuoj-backend-user-service 8102端口、
- yuoj-backend-question-service 8103端口、
- yuoj-backend-judge-service8104端口、
- yuoj-backend-gateway8101端口),每个服务本地目录都有一个Dockerfile,请帮我自动生成dockercompose的yml配置文件,要求这些服务网络能够连通
梳理服务部署表格
服务名称 | 英文名 | 端口号 | 版本号 | 服务类别 |
---|---|---|---|---|
数据库 | mysql | 3306 | v8 | 环境依赖 |
缓存 | redis | 63791 | v6 | 环境依赖 |
消息队列 | rabbitmq | 5672,15672 | v3.12.6 | 环境依赖 |
注册中心 | nacos | 8848 | v2.2.0 | 环境依赖 |
网关服务 | gateway | 8101 | java8 | 业务服务 |
用户服务 | user-service | 8102 | java8 | 业务服务 |
- docker-compose
version: '3.3'
services:
# --------> Nginx-Server <--------
my-nginx: # 服务的名称
image: nginx:latest # 指定了服务所使用的 Docker 镜像
env_file: .env
ports: # 指定了服务的端口映射关系
- "${NGINX_PORT}:80"
volumes: # 指定了服务的卷挂载配置
- ${NGINX_VOLUMES_HTML}:/usr/share/nginx/html
- ${NGINX_VOLUMES_CONFD}:/etc/nginx/conf.d
- ${NGINX_VOLUMES_CONF}:/etc/nginx/nginx.conf
# --------> MY-AUTH-Server <--------
my-auth-server:
build:
context: ./
dockerfile: ./abstract-express.dockerfile
image: my-auth-server
container_name: my-auth-server
restart: unless-stopped
working_dir: /usr/src
env_file: .env
ports:
- ${SERVER_PORT}:4000
volumes:
- my-app-volume:/usr
networks:
- my-network
stdin_open: true
tty: true
# --------> MY-APP-Server <--------
my-app:
build:
context: ./
dockerfile: ./abstract-express.dockerfile
image: my-app
container_name: my-app
restart: unless-stopped
working_dir: /usr/src
env_file: .env
ports:
- ${SERVER_PORT}:4000
volumes:
- my-app-volume:/usr
networks:
- my-network
stdin_open: true
tty: true
# --------> MY-APP-Server <--------
rabbitmq:
image: 'rabbitmq:3.12.6-management'
container_name: rabbitmq_service
ports:
- '5672:5672'
- '15672:15672' # 管理界面端口
environment:
RABBITMQ_DEFAULT_USER: 'guest'
RABBITMQ_DEFAULT_PASS: 'guest'
# --------> MY-APP-Server <--------
nacos:
image: 'nacos/nacos-server:2.2.0'
container_name: nacos_service
ports:
- '8848:8848'
environment:
- MODE=standalone
# --------> MY-APP-MONGODB <--------
my-mongo:
image: mongo:latest
container_name: my-mongo
env_file:
- .env
environment:
DB_PASS: ${DB_PASS}
DB_USER: ${DB_USER}
restart: always
networks:
- my-network
ports:
- ${DB_PORT}:27017
volumes:
- my-mongodb-volume:/data/db
# --------> MY-APP-MYSQL <--------
my-mysql:
# image: 'mysql:8'
image: mysql:latest
container_name: mysql_service
command: --default-authentication-plugin=mysql_native_password
restart: always
ports:
- '${MYSQL_DB_PORT}:3306'
volumes:
- my-mysql-volume:/var/lib/mysql
networks:
- my-network
env_file:
- .env
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE} # 可选,初始化数据库名
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
# --------> MY-APP-REDIS <--------
my-redis:
# image: 'redis:6'
image: "bitnami/redis:latest"
container_name: my-redis
user: "root"
environment:
ALLOW_EMPTY_PASSWORD: "yes"
networks:
- my-network
env_file:
- .env
ports:
- ${REDIS_PORT}:6379
restart: unless-stopped
volumes:
- ${REDIS_PASS}/my-redis:/bitnami/redis
networks:
my-network:
external:
name: my-network
volumes:
my-app-volume:
my-mongodb-volume:
my-mysql-volume:
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139