前言

今天写项目要用到MQ,自己装了一遍,如果以后再次重新装还得一遍遍的跑命令,太麻烦了。把命令封城脚本。以后跑脚本就行了

脚本

#!/bin/sh
 
#docker load -i rocketmq_5.0.0.tar
#docker pull rocketmqinc/rocketmq:5.0.0
 
#docker load -i rocketmq-console_0.2.tar
 
IP=192.168.4.110
local_ip=$IP
#local_ip=`ifconfig eth0|grep inet|awk '{print $2}' |wc -l`
#if [[ $local_ip -eq 0 ]]; then
#    local_ip=$IP
#else
#    local_ip=`ifconfig eth0|grep inet|awk '{print $2}' |head -1`
#fi
 
path="$( cd "$( dirname "$0"  )" && pwd  )"
 
mkdir -p data/broker/logs
mkdir -p data/broker/store
mkdir -p conf
mkdir -p nameserver/store
mkdir -p nameserver/logs
mkdir -p console
touch console/users.properties
# 添加用户到 users.properties 文件
echo "# 该文件支持热修改,即添加和修改用户时,不需要重新启动console" >> console/users.properties
echo "# 格式, 每行定义一个用户, username=password[,N]  #N是可选项,可以为0 (普通用户); 1 (管理员)" >> console/users.properties
echo "" >> console/users.properties
echo "# 定义管理员" >> console/users.properties
echo "admin=admin,1" >> console/users.properties
echo "" >> console/users.properties
echo "# 定义普通用户" >> console/users.properties
echo "# user1=user1" >> console/users.properties
echo "# user2=user2" >> console/users.properties

 
cat > run_namesrv.sh <<'EOF'
docker run -d --restart=always --name rmqnamesrv --privileged=true -p 9876:9876  -v current_path/nameserver/logs:/root/logs -v current_path/nameserver/store:/root/store -e "MAX_POSSIBLE_HEAP=100000000" apache/rocketmq:5.0.0 sh mqnamesrv
EOF
 
cat > run_broker.sh <<'EOF'
docker run -d --restart=always --name rmqbroker --link rmqnamesrv:namesrv -p 10911:10911 -p 10909:10909 --privileged=true -v current_path/data/broker/logs:/root/logs -v current_path/data/broker/store:/root/store -v current_path/conf/broker.conf:/optcurrent_path/broker.conf -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" apache/rocketmq:5.0.0 sh mqbroker -c /optcurrent_path/broker.conf
EOF
 
cat > conf/broker.conf <<'EOF'
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = local_ip
EOF
 
 
cat > run_console.sh <<'EOF'
docker run -d --name rmqadmin \
              -v current_path/console:/tmp/rocketmq-console/data \
              -e "JAVA_OPTS=-Drocketmq.namesrv.addr=local_ip:9876 \
              -Dcom.rocketmq.sendMessageWithVIPChannel=false \
              -Drocketmq.config.loginRequired=true"\
              -p 9877:8080 \
              pangliang/rocketmq-console-ng
EOF
 
cat > ps <<'EOF'
docker ps -a |grep rmq
EOF
 
sed -i "s#current_path#$path#g" run_namesrv.sh
sed -i "s#current_path#$path#g" run_broker.sh
sed -i "s#local_ip#$local_ip#g" conf/broker.conf
sed -i "s#local_ip#$local_ip#g" run_console.sh
 
chmod +x ps
 
sh run_namesrv.sh
sh run_broker.sh
sh run_console.sh