docker-compose部署规范-服务命名和端口分配

docker-compose部署规范-服务命名和端口分配

本规范根据多个项目实践总结,服务命名和端口分配都提现在docker-compose.yml的配置中

服务命名

  • 优先采用中间件名称、语言名称对服务进行命名,如下
    • mysql
    • mongo
    • java
    • python
    • web
  • 如果同一类型服务有多个,则采用中横线命名方式进行区分,如下:
    • java-auth :java鉴权服务
    • web-auth: web鉴权服务

端口命名

  • 容器内部名称,不改动原服务端口默认值
    • mysql:3306
    • mongo:27017
    • java:7001
    • python:6001
    • web: 80(http)、443(https)
  • 映射到宿主主机的端口时,采用前置默认+统一分配端口段 组合方式,如某个项目分配一个端口段,比如060~064
    • mysql:33060->33060
    • mongo:27017->27060
    • java: 7060->7001
    • python:6060->6001
    • web:8060->80
    • java-auth :7061->7001(在自己端口段内递增分配)
    • web-auth: 8061->80(在自己端口段内递增分配)
  • 总计有000~999可以分配,按着端口分配计划,每个产品分配5个端口,一个产品线可以满足200个产品的端口分配

服务间的引用

服务间的引用主要包含两个常见:

  • docker-compose文件中的服务引用
  • nginx.conf中的服务引用

优先采用"服务名:默认端口”方式,这样在重新部署时不用做调整,例如:

docker-compose中的引用样例

java-auth:
    image: java-auth:master
    ports:
      - "7061:7001"
    environment:
       spring.datasource.url: jdbc:mysql://mysql:3306/wh_index?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&autoReconnect=true

nginx中的引用样例

server {
    listen       80;
    location / {
        root  /usr/src/app;
        index  index.html;
    }

    location /api/ {
        proxy_pass http://java:7001/api/;  #后台服务路径
    }

    location  /api/auth/ {
        proxy_pass http://java-auth:7001/api/auth/api/; #菜单服务路径
    }

    location /api/p/ {
        proxy_pass http://python:6001/api/p/;
    }
}

你可能感兴趣的:(docker-compose部署规范-服务命名和端口分配)