# 基于Docker的Shell脚本文件

启动App

#!/bin/bash

# 描述:ciot部署脚本
#
# 注意:脚本中的主机地址需要替换为服务器的网络地址   vi中替换方式 ":1,$ s/$ip/172.30.154.246/g"		
#

# echo "=====================【Caution: please ensure the IP in script has been replace your current host network IP】================="
# echo "=====================【Caution: vi edit sample:1,$ s/$ip/172.30.154.246/g 】==================================================="

echo -n "please enter current server IP:"
read ip
echo "syntx: CIOT wile auto deploy on server[$ip]."

# 基本目录配置,根据需要修改,例如/opt修改为/mnt
baseDir=/opt/docker/docker-ciot
# 清理容器
clean=yes

# step01: 检查系统是否安装docker命令,并清理已完成的镜像
echo "step01:============Clean Docker ======================="
if ! [ -x "$(command -v docker)" ]; then
  echo 'Error: docker is not installed.' >&2
  cd $baseDir
  tar -zxvf docker-ciot.tar.gz
  rpm -ivh docker/* --nodeps --force
  systemctl daemon-reload
  systemctl enable docker
  systemctl start docker
else
  echo 'warn: find docker command'  
  if [ $clean == "yes" ];then
	echo 'syntx: clean docker.'  
	docker stop $(docker ps -a -q)
	docker rm $(docker ps -a -q)
	docker rmi $(docker images -q)
  fi
fi
echo "========================================================"

# step02: 导入mysql镜像
echo "step02:============Import mysql========================"
cd $baseDir
tar -zxvf mysql.tar.gz && cd mysql
docker load --input ./mymysql-5.7.tar
rm -rf ./mymysql-5.7.tar
docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/var/log/mysql -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --network host -d mymysql:5.7
echo "========================================================"

# step03: 导入clickhouse镜像
echo "step03:============Import clickhouse===================="
cd $baseDir
tar -zxvf clickhouse.tar.gz && cd clickhouse
docker load --input ./mych-1.0.0.tar
rm -rf ./mych-1.0.0.tar
docker run -d --name mych --ulimit nofile=262144:262144 -p 8123:8123 --volume=$PWD/database:/var/lib/clickhouse --network host mych:1.0.0
echo "========================================================"

# step04:导入redis集群镜像
echo "step04:============Import redis========================="
cd $baseDir
tar -zxvf rediscluster.tar.gz && cd rediscluster
docker load --input ./rediscluster-latest.tar
rm -rf ./rediscluster-latest.tar
docker run --name myredisc -v $PWD/data:/data -p 7000:7000 -p 7001:7001 -p 7002:7002 -p 7003:7003 -p 7004:7004 -p 7005:7005 -d --network host tommy351/redis-cluster
echo "========================================================"

# step05:导入zookeeper镜像
echo "step05:============Import zookeeper====================="
cd $baseDir
docker load --input ./myzk-1.0.0.tar
docker run -d --name myzk -p 2181:2181 --network host myzk:1.0.0
echo "========================================================"

# step06:导入kafka镜像
echo "step06:============Import kafka    ====================="
docker load --input ./mykafka-1.0.0.tar
docker run -d --name mykafka -p 9092:9092 --env KAFKA_ZOOKEEPER_CONNECT=$ip:2181 --env KAFKA_ADVERTISED_HOST_NAME=$ip \
--env KAFKA_ADVERTISED_PORT=9092 --env KAFKA_DELETE_TOPIC_ENABLE=true --env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://$ip:9092 \
--volume /etc/localtime:/etc/localtime --network host mykafka:1.0.0

echo "syntx:the following will occure some warns, such as 'kafka.admin.TopicCommand',that is create topic, please ignore it."
docker exec -it mykafka /opt/kafka_2.12-2.3.0/bin/kafka-topics.sh --create --zookeeper $ip:2181 --replication-factor 1 --partitions 1 --topic TopicDeviceLog
docker exec -it mykafka /opt/kafka_2.12-2.3.0/bin/kafka-topics.sh --create --zookeeper $ip:2181 --replication-factor 1 --partitions 1 --topic TopicIpAccessLog
echo "========================================================"

# step07:配置logstash
echo "step07:============Import Logstash ====================="
cd $baseDir
tar -zxvf logstash.tar.gz && cd logstash
sed -i "s/localhost/$ip/g" `grep localhost -rl ./config/kafka-to-ck-devicelog_v1.2.conf`
docker load --input ./mylogstash-1.0.0.tar
rm -rf ./mylogstash-1.0.0.tar
docker run -d -p 9600:9600 -it -v $PWD/config/:/usr/share/logstash/config/  --network host mylogstash:1.0.0
echo "========================================================"

# step08:导入cms项目中的admin、executor、web镜像
echo "step08:============Import ciot ========================="
cd $baseDir
docker load --input ./ciot-admin-1.0.0.tar
docker load --input ./ciot-exe-1.0.0.tar
docker load --input ./ciot-web-1.0.0.tar
docker run --name ciot-admin -p 8081:8081 --network host -d ciot-admin:1.0.0
docker run --name ciot-exe -p 9999:9999 --network host -d ciot-exe:1.0.0
docker run --name ciot-web -p 8083:8083 --network host -d ciot-web:1.0.0
echo "========================================================"

echo "ciot system has deployed, please check in browser:"
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>ciot-admin: http://$ip:8081/"
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>ciot-web: http://$ip:8083/"	
上次更新: 2020-03-17 18:18:16