首先swarm集群为什么使用docker-composer v3来发布:
现在只有v3支持deploy属性(是docker swarm相关配置)
参考:https://docs.docker.com/compose/compose-file/compose-versioning/#version-3 (这里面有v2和v3的配置区别)
docker-composer.yaml文件内容说明:
1version: '3' 2#这个可以填1.0-3.3据体版本号是否支持要对应的docker版本(越高支持越多,但也删除了不少功能) 3#https://docs.docker.com/compose/compose-file/#reference-and-guidelines 支持情况参考此地址
说明:
docker-composer使用swarm容器时很多标签没法使用
1.container_name 容器名称
2.links 关链联接
3.extends (吐血,v3不支持,可能以后会支持)
4. env 环境变量(再吐血....)
现在只举一个docker-compose-zk.yaml配置说明:
1version: '3' #使用docker-composer版本3+ 2services: 3 zookeeper0:#这个是service服务名,在一个overlay中可以直接ping zookeeper0可以通 4 image: hyperledger/fabric-zookeeper:x86_64-1.0.3 5 deploy: #service服务发布信息 6 replicas: 1 #应用被复制的份数 7 update_config: #更新service的说明 8 parallelism: 1 #//TODO 9 delay: 10s 10 restart_policy: 11 condition: on-failure#启动或service服务错误后重启服务 12 delay: 5s 13 max_attempts: 3 #最多重启3次,超过重启次数最好在portainer中重启,而不是docker start方式 14 placement: 15 constraints: #使用布署约束,可以指定布署到相应条件下的节点上 16# - node.hostname==fabric_node_01 #hostname可能会被更新或指定,不建议使用这个 17 - node.labels.fabric_node_01==fabric_node_01 #指定要安装到node上有labels[fabric_node_01]的机子上 18 hostname: zookeeper0 #service的hostname 可有可无 19 networks: 20 blockchain-network:#这个是overlay的网络配置,指定了使用blockchain-network网络,必须在最外层配置好 21 aliases: 22 - zookeeper0 #这个指定后可以在overlay网内通过这个名称访问到这个服务(即ping到这个服务) 23 environment: 24 - ZOO_DATA_DIR=/data #zk的服务生成的目录,这个必须指定,并用volumes指定到服务外 25 - ZOO_MY_ID=1 #这个zk集群的本服务id,只要不唯一即可 26 - ZOO_SERVERS=server.1=zookeeper0:2888:3888 server.2=zookeeper1:2888:3888 #这个就不说了 27 volumes: 28 - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime #映射本地文件夹,指定容器为东8区 29 - /opt/fabric_data/fabric_node_01/zk/data:/data 30#映射本地文件夹,应射前一定要先mkdir -p创建好这个文件夹,把关键数据映射出去,服务自动重启后数据不会丢失(相当于服务和存储分离了),这里只用的本机映射的方式,这个是volumes相关的东西,还可以应映到存储云或nfs节点上 31#可以自个创建一个volume,文件映射到这个volume上,volume可以加密,云存储,灾难备份等功能 32 zookeeper1: 33 image: hyperledger/fabric-zookeeper:x86_64-1.0.3 34 deploy: 35 replicas: 1 36 update_config: 37 parallelism: 1 38 delay: 10s 39 restart_policy: 40 condition: on-failure 41 delay: 5s 42 max_attempts: 3 43 placement: 44 constraints: 45 - node.labels.fabric_node_04==fabric_node_04 46 hostname: zookeeper1 47 networks: 48 blockchain-network: 49 aliases: 50 - zookeeper1 51 environment: 52 - ZOO_DATA_DIR=/data 53 - ZOO_MY_ID=2 54 - ZOO_SERVERS=server.1=zookeeper0:2888:3888 server.2=zookeeper1:2888:3888 55 volumes: 56 - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime 57 - /opt/fabric_data/fabric_node_04/zk/data:/data 58 depends_on: 59 - zookeeper0 #容器启动前先要启动zookeeper0 60networks: #最外层的网络指定配置,这里可以写多个网络 61 blockchain-network: 62 external: 63 name: blockchain-network
swarm服务要使用overlay网格:
1#创建overlay网络 2docker network create --driver overlay --subnet=10.199.1.0/24 blockchain-network --attachable
最后就是端口开放了,这个前面说过了
docker-compser的官方文档地址:https://docs.docker.com/compose/compose-file/