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、卸载
1
rm docker-compose

二、配置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 【服务名】

重启全部服务

1
docker-compose restart

自动关闭并删除容器

1
docker-compose down

加参数 -v 同时删除卷

1
docker-compose down -v