DockerCompose多应用布署
一、安装dockercompose
1、下载
1
| curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
|
2、赋权
1
| chmod +x /usr/local/bin/docker-compose
|
3、查看版本
1
| docker-compose --version
|
4、卸载
二、配置docker-compose.yml
docker-compose 同目录创建 docker-compose.yml,也可以创建在其他目录,启动时使用-f参数指定文件路径
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
| services: rocketmq-namesrv-1: image: apache/rocketmq:4.9.1 container_name: rocketmq-namesrv-1 ports: \- 9876:9876 volumes: \- /etc/localtime:/etc/localtime:ro \- /data/middleware/rocketmq/logs/nameserver1:/home/rocketmq/logs/rocketmqlogs command: sh mqnamesrv networks: \- rocketmq rocketmq-namesrv-2: image: apache/rocketmq:4.9.1 container_name: rocketmq-namesrv-2 ports: \- 9877:9876 volumes: \- /etc/localtime:/etc/localtime:ro \- /data/middleware/rocketmq/logs/nameserver2:/home/rocketmq/logs/rocketmqlogs command: sh mqnamesrv networks: \- rocketmq rocketmq-broker-1: image: apache/rocketmq:4.9.1 container_name: rocketmq-broker-1 ports: \- 10911:10911 volumes: \- /etc/localtime:/etc/localtime:ro \- /data/middleware/rocketmq/logs/broker1:/home/rocketmq/logs/rocketmqlogs \- /data/middleware/rocketmq/data/store1:/home/rocketmq/store \- /data/middleware/rocketmq/conf/broker1/broker.conf:/home/rocketmq/rocketmq-4.9.1/conf/broker.conf environment: TZ: Asia/Shanghai NAMESRV_ADDR: "rocketmq-namesrv-1:9876;rocketmq-namesrv-2:9876" JAVA_OPTS: "-Duser.home=/opt" JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m" command: sh mqbroker -c /home/rocketmq/rocketmq-4.9.1/conf/broker.conf autoCreateTopicEnable=true & depends_on: \- rocketmq-namesrv-1 \- rocketmq-namesrv-2 networks: \- rocketmq rocketmq-broker-2: image: apache/rocketmq:4.9.1 container_name: rocketmq-broker-2 ports: \- 10912:10911 volumes: \- /etc/localtime:/etc/localtime:ro \- /data/middleware/rocketmq/logs/broker2:/home/rocketmq/logs/rocketmqlogs \- /data/middleware/rocketmq/data/store2:/home/rocketmq/store \- /data/middleware/rocketmq/conf/broker2/broker.conf:/home/rocketmq/rocketmq-4.9.1/conf/broker.conf environment: TZ: Asia/Shanghai NAMESRV_ADDR: "rocketmq-namesrv-1:9876;rocketmq-namesrv-2:9876" JAVA_OPTS: " -Duser.home=/opt" JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m" command: sh mqbroker -c /home/rocketmq/rocketmq-4.9.1/conf/broker.conf autoCreateTopicEnable=true & depends_on: \- rocketmq-namesrv-1 \- rocketmq-namesrv-2 networks: \- rocketmq rocketmq-broker-3: image: apache/rocketmq:4.9.1 container_name: rocketmq-broker-3 ports: \- 10913:10911 volumes: \- /etc/localtime:/etc/localtime:ro \- /data/middleware/rocketmq/logs/broker3:/home/rocketmq/logs/rocketmqlogs \- /data/middleware/rocketmq/data/store3:/home/rocketmq/store \- /data/middleware/rocketmq/conf/broker3/broker.conf:/home/rocketmq/rocketmq-4.9.1/conf/broker.conf environment: TZ: Asia/Shanghai NAMESRV_ADDR: "rocketmq-namesrv-1:9876;rocketmq-namesrv-2:9876" JAVA_OPTS: " -Duser.home=/opt" JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m" command: sh mqbroker -c /home/rocketmq/rocketmq-4.9.1/conf/broker.conf autoCreateTopicEnable=true & depends_on: \- rocketmq-namesrv-1 \- rocketmq-namesrv-2 networks: \- rocketmq rocketmq-console: image: styletang/rocketmq-console-ng:1.0.0 container_name: rocketmq-console ports: \- 9090:8080 volumes: \- /etc/localtime:/etc/localtime:ro \- /data/middleware/rocketmq/logs/console:/root/logs environment: JAVA_OPTS: -Drocketmq.namesrv.addr=rocketmq-namesrv-1:9876;rocketmq-namesrv-2:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false networks: \- rocketmq depends_on: \- rocketmq-broker-1 \- rocketmq-broker-2 \- rocketmq-broker-3 networks: rocketmq: driver: bridge
|
其中broker配置store的时候,宿主机/data/middleware/rocketmq/data/下的store需要赋权,使docker可以写数据,否则broker无法启动
三、配置broker.conf
三个broker都需要配置,注意brokerName各不相同
1 2 3 4 5 6 7 8 9
| rokerClusterName = DefaultCluster brokerName = rocketmq-broker-1 brokerId = 0 deleteWhen = 04 fileReservedTime = 48 brokerRole = ASYNC_MASTER flushDiskType = ASYNC_FLUSH brokerIP1=192.168.1.170 storePathRootDir=/home/rocketmq/store
|
四、docker-compose常用命令
启动服务
1 2 3
| # -f 指定配置文件 文件名是docker-compose.yml且与docker-compose同目录时可以不指定,直接docker-compose up -d 启动
docker-compose -f docker-compose.yml up -d
|
重新启动指定服务
1
| docker-compose up -d 【服务名】
|
重启全部服务
自动关闭并删除容器
加参数 -v 同时删除卷