# sit
dev
需求场景
现在我需要用 docker compose 来部署
- mysql8(3306 端口)username=root,password=123456
- 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:
dev-nginx: # 服务的名称
image: nginx:latest # 指定了服务所使用的 Docker 镜像
env_file: .env
ports: # 指定了服务的端口映射关系
- "${NGINX_PORT}:83"
volumes: # 指定了服务的卷挂载配置
- ${NGINX_VOLUMES_HTML}:/usr/share/nginx/html
- ${NGINX_VOLUMES_CONFD}:/etc/nginx/conf.d
- ${NGINX_VOLUMES_CONF}:/etc/nginx/nginx.conf
# --------> MY-APP-Server <--------
my-app:
build:
context: ../
dockerfile: ./.docker/node.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
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