Docker Stack 部署yunbay后台项目

一、项目用到nsqd分布式消息服务

nsqd

nsqlookupd

nsqadmin

docker nsq-compose.yml文件如下:

version: "3.2"
services:
    # 唯一性,在集群中的节点只能指向唯一的nsqlookupd服务
    # 去中心化,即使nsqlookupd崩溃,也会不影响正在运行的nsqd服务
    # 充当nsqd和naqadmin信息交互的中间件
    # 提供一个http查询服务,给客户端定时更新nsqd的地址目录
  nsqlookup: # 拓扑结点
    image: nsqio/nsq:latest
    ports:
        - 4160:4160
        - 4161:4161
    command: /nsqlookupd
    networks:
        - yunbay_backend

  nsqd: # nsqd节点
    image: nsqio/nsq:latest
    ports:
      - 4150:4150
      - 4151:4151
    volumes:
      - /data/nsqd/:/data
    depends_on:
      - nsqlookup
    command: /nsqd --lookupd-tcp-address=nsqlookup:4160 --data-path=/data   # nsqd数据持久目录
    networks:
        - yunbay_backend

  nsqadmin: # nsq后台管理
    image: nsqio/nsq:latest
    ports:
      - 4171:4171
    command: /nsqadmin --lookupd-http-address=nsqlookup:4161
    depends_on:
      - nsqlookup
    networks:
        - yunbay_backend

networks:  
  yunbay_backend:
    external: true  # 外部定义网络,即由docker network create创建的网络(注:stack命令不能创建新的可对接网络)

一、yunbay后台服务如下:

account

ybapi

ybgoods

yborder

ybpay

ybasset

ybim

ybeos

ybnsq

ybsearch

ybcron

docker yunbay-compose.yml文件如下:

version: "3.2"
services:

  account: # 帐号服务
    image: 172.17.6.140:5000/jayden21/account:latest
    ports:
      - 92:92
    networks:
      - backend
    volumes:
      - conf-data:/opt
      - /tmp/logs:/tmp/logs
    # depends_on:
    #   - redis
    command: -config /opt/account/conf/config.yml -log_dir /tmp/logs/account
    deploy:
      replicas: 1
      update_config:
        parallelism: 2
      restart_policy:
        condition: on-failure

  api: # 公共服务
    image: 172.17.6.140:5000/jayden21/ybapi:latest
    ports:
      - 90:90
    networks:
      #- frontend
      - backend
    volumes:
      - conf-data:/opt  
      - /tmp/logs:/tmp/logs
    command: -config /opt/ybapi/conf/config.yml -log_dir /tmp/logs/ybapi
    # depends_on:
    #   - db
    deploy:
      replicas: 1
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure

  ybgoods: # 商品服务
    image: 172.17.6.140:5000/jayden21/ybgoods:latest
    ports:
      - 96:96
    networks:
      - backend
    volumes:
      - conf-data:/opt 
      - /tmp/logs:/tmp/logs
    command: -config /opt/ybgoods/conf/config.yml -log_dir /tmp/logs/ybgoods      
    # depends_on:
    #   - redis
    deploy:
      replicas: 1
      update_config:
        parallelism: 2
      restart_policy:
        condition: on-failure

  yborder: # 订单服务
    image: 172.17.6.140:5000/jayden21/yborder:latest
    ports:
      - 91:91
    networks:
      - backend
    volumes:
      - conf-data:/opt 
      - /tmp/logs:/tmp/logs
    command: -config /opt/yborder/conf/config.yml -log_dir /tmp/logs/yborder        
    # depends_on:
    #   - redis
    deploy:
      replicas: 1
      update_config:
        parallelism: 2
      restart_policy:
        condition: on-failure

  ybasset: # 资产服务
    image: 172.17.6.140:5000/jayden21/ybasset:latest
    ports:
      - 95:95
    networks:
      - backend
    volumes:
      - conf-data:/opt 
      - /tmp/logs:/tmp/logs
    command: -config /opt/ybasset/conf/config.yml -log_dir /tmp/logs/ybasset    
    # depends_on:
    #   - redis
    deploy:
      replicas: 1
      update_config:
        parallelism: 2
      restart_policy:
        condition: on-failure

  ybpay: # 第三方支付服务
    image: 172.17.6.140:5000/jayden21/ybpay:latest
    ports:
      - 94:94
    networks:
      - backend
    volumes:
      - conf-data:/opt 
      - /tmp/logs:/tmp/logs
    command: -config /opt/ybpay/conf/config.yml -log_dir /tmp/logs/ybpay      
    # depends_on:
    #   - redis
    deploy:
      replicas: 1
      update_config:
        parallelism: 2
      restart_policy:
        condition: on-failure

  ybeos: # eos节点
    image: 172.17.6.140:5000/jayden21/ybeos:latest
    ports:
      - 97:97
    networks:
      - backend
    volumes:
      - conf-data:/opt 
    command: -config /opt/ybeos/conf/config.yml        
    # depends_on:
    #   - redis
    deploy:
      replicas: 1
      update_config:
        parallelism: 2
      restart_policy:
        condition: on-failure 

  ybim: # im服务
    image: 172.17.6.140:5000/jayden21/ybim:latest
    ports:
      - 98:98
    networks:
      - backend
    volumes:
      - conf-data:/opt 
    command: -config /opt/ybim/conf/config.yml        
    # depends_on:
    #   - redis
    deploy:
      replicas: 1
      update_config:
        parallelism: 2
      restart_policy:
        condition: on-failure  
  
  ybsearch: # 搜索服务
    image: 172.17.6.140:5000/jayden21/ybsearch:latest
    ports:
      - 93:93
    networks:
      - backend
    volumes:
      - conf-data:/opt 
    command: -config /opt/ybsearch/conf/config.yml        
    # depends_on:
    #   - redis
    deploy:
      replicas: 1
      update_config:
        parallelism: 2
      restart_policy:
        condition: on-failure

  ybnsq: # nsq消息服务
    image: 172.17.6.140:5000/jayden21/ybnsq:latest
    networks:
      - backend
    volumes:
      - conf-data:/opt 
      - /tmp/logs:/tmp/logs
    extra_hosts: # 添加域名绑定
      - "node1: 172.17.6.140"
      - "node2: 172.17.6.139"
      - "node3: 172.17.6.138"
    command: -config /opt/ybnsq/conf/config.yml -log_dir /tmp/logs/ybnsq        
    # depends_on:
    #   - redis
    deploy:
      replicas: 1
      update_config:
        parallelism: 2
      restart_policy:
        condition: on-failure

  ybcron: # 定时程序
    image: 172.17.6.140:5000/jayden21/ybcron:latest
    networks:
      - backend
    volumes:
      - conf-data:/opt 
      - /tmp/logs:/tmp/logs
    command: -config /opt/ybcron/conf/config.yml -log_dir /tmp/logs/ybcron       
    # depends_on:
    #   - redis
    deploy:
      replicas: 1
      update_config:
        parallelism: 2
      restart_policy:
        condition: on-failure        

      
      
  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - "9001:8080"
    stop_grace_period: 1m30s
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]
        
  portainer:
    image: portainer/portainer
    ports:
      - "9002:9000"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      replicas: 1
      placement:
        constraints: [node.role == manager]

networks:
  frontend:
  backend:

volumes:
  conf-data:
    driver_opts:
      type: "nfs4"
      o: "addr=172.17.6.140,nolock,soft,rw" # 需要在此节点上安装nfs-utils,并开启服务
      device: ":/opt"
  

二、配置compose.yml注意的几点:

1、由于nsq和yunbay是两个不同的swarm集群,因此yunbay里的ybnsq通过nsq swarm里面的nsqlookup取到nsqd的地址是nsq swarm网络里面的主机名(容器id),两个swarm没使用同一个(可对接)网络的话,解析不了nsqd的主机名,因此,两个swarm需要使用可对接网络解决

2、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值