# 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