# 项目开发

需求场景

现在我需要用 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.8'

services:
  mysql:
    image: 'mysql:8'
    container_name: mysql_service
    restart: always
    ports:
      - '3306:3306'
    environment:
      MYSQL_ROOT_PASSWORD: '123456'
      MYSQL_DATABASE: 'your_database_name' # 可选,初始化数据库名
    volumes:
      - mysql_data:/var/lib/mysql

  redis:
    image: 'redis:6'
    container_name: redis_service
    ports:
      - '6379:6379'

  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'

  nacos:
    image: 'nacos/nacos-server:2.2.0'
    container_name: nacos_service
    ports:
      - '8848:8848'
    environment:
      - MODE=standalone

  yuoj-backend-user-service:
    build: ./yuoj-backend-user-service # 假设这是服务的本地目录
    container_name: user-service
    ports:
      - '8102:8102'
    networks:
      - backend_net

  yuoj-backend-question-service:
    build: ./yuoj-backend-question-service
    container_name: question-service
    ports:
      - '8103:8103'
    networks:
      - backend_net

  yuoj-backend-judge-service:
    build: ./yuoj-backend-judge-service
    container_name: judge-service
    ports:
      - '8104:8104'
    networks:
      - backend_net

  yuoj-backend-gateway:
    build: ./yuoj-backend-gateway
    container_name: gateway-service
    ports:
      - '8101:8101'
    networks:
      - backend_net

volumes:
  mysql_data:

networks:
  backend_net:
    driver: bridge
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