Commit d34bbf16 authored by tianye's avatar tianye

一件docker-compose安装中间件

parent cf2b7db6
......@@ -7,22 +7,40 @@ function if_err(){
fi
}
echo -e "\033[32m*欢迎安装Health-cloud-DB服\033[0m "
sleep 3
echo -e "\033[32m*中间件包括Mysql,MongoDB,Es,Redis,RabbitMQ\033[0m"
sleep 3
source ./install.ini
#定义安装程序的db路径
DB_DEPLOY_FILE=$(dirname $0)/Health-cloud-server/db_server
echo ${DB_DEPLOY_DIR}
if [ ! -d ${DB_DEPLOY_DIR} ];then mkdir -p ${DB_DEPLOY_DIR};fi
#定义部署目标路径(app,db)
db_sc_dir=${DB_DEPLOY_DIR}
#将docker-compose工程部署到本机
cp -rf ${DB_DEPLOY_FILE} ${db_sc_dir}
cp -rf ${DB_DEPLOY_FILE}/* ${db_sc_dir}/
#创建数据目录
echo -e "正在创建数据目录"
echo "${db_sc_dir}"
mkdir -p ${db_sc_dir}/data/{es_data,mq_data,mongo_data,redis_data,mysql_data}
echo "DB_DEPLOY_DIR=/ops_project/Health-cloud-server-DB">${db_sc_dir}/.env
cd ${db_sc_dir}
db_compose_file=${db_sc_dir}/docker-compose-alldb.yaml
docker-compose ${db_compose_file} up -d
docker-compose ${db_compose_file} status
if_err
\ No newline at end of file
source .env
db_compose_file=$PWD/docker-compose-alldb.yaml
docker-compose -f ${db_compose_file} up -d
sleep 3
docker-compose -f ${db_compose_file} ps
if_err
echo -e "\033[32m***Health-cloud-DB中间件已全部安装成功***\033[0m"
echo -e "\033[33m*********安装位置:${db_sc_dir}*****************\033[0m"
echo -e "\033[34m查看服务\033[0m:docker-compose -f ${db_compose_file} ps"
echo -e "\033[34m卸载服务\033[0m:docker-compose -f ${db_compose_file} down"
#!/bin/bash
action=$1
target=$2
source ~/.hcrc 2>/dev/null || echo ""
app_sc_dir=${app_sc_dir:-/ops_project/Health-cloud-server/search-center}
source ${app_sc_dir}/install.ini
#DB-compose文件DB_DEPLOY_DIR
COMPOSE_FILE=$(cat ${app_sc_dir}/compose_files 2>/dev/null || echo "")
#修改es连接信息(默认-->外部)
edit_es_info(){
echo -e " 使用外部MQ"
echo -e " 即将修改配置...."
sleep 2
sed -i -e "s#host: es#host: ${ES_HOST}#g"\
-e "s#username: elastic#username: ${ES_USERNAME}#g"\
-e "s#password: changeme#password: ${ES_PASSWORD}#g"\
-e "s#httpPort: 9200#httpPort: ${ES_HTTP_PORT}#g"\
-e "s#tcpPort: 9300#tcpPort: ${ES_TCP_PORT}#g" \
-e "s#clusterName: elasticsearch-cluster#clusterName: ${ES_ClusterName}#g" ${APP_CONF_DIR}/application.yml
}
#修改mq连接信息(默认-->外部)
edit_mq_info(){
echo -e " 使用外部MQ"
echo -e " 即将修改配置...."
sleep 2
sed -i -e "s#host: rabbitmq01#host: ${MQ_HOST}#g"\
-e "s#username: admin#username: ${MQ_USERNAME}#g"\
-e "s#password: admin#password: ${MQ_PASSWORD}#g"\
-e "s#port: 5672#port: ${MQ_PORT}#g"\
-e "s#virtual-host: /#virtual-host: ${MQ_VHOST}#g" ${APP_CONF_DIR}/application.yml
}
function usage() {
echo "Health-Cloud 控制脚本"
echo
echo "Usage: "
echo " ./hcctl.sh [COMMAND] [ARGS...]"
echo " ./hcctl.sh --help"
echo
echo "Commands: "
echo " status 查看 Health-Cloud 服务运行状态"
echo " start 启动 Health-Cloud 服务"
echo " stop 停止 Health-Cloud 服务"
echo " restart 重启 Health-Cloud 服务"
echo " uninstall 卸载 Health-Cloud 服务"
}
#docker-compose的基础配置
install_compose-files(){
select INSTALL_MODE in "all" "server" "controller"
do
echo "${DB_DEPLOY_DIR},${APP_NAME}"
compose_files="-f ${DB_DEPLOY_DIR}/docker-compose-base.yaml"
case ${INSTALL_MODE} in
all)
echo "即将进入all模式,这将安装search-center全部服务与组件"
sleep 2
compose_files="${compose_files} -f ${DB_DEPLOY_DIR}/docker-compose-es.yaml -f ${DB_DEPLOY_DIR}/docker-compose-mq.yaml -f ${app_sc_dir}/docker-compose-searchcenter.yaml"
break
;;
server)
echo "即将进入server模式,这将只安装search-center服务"
sleep 2
compose_files="${compose_files} -f ${app_sc_dir}/docker-compose-searchcenter.yaml"
break
;;
controller)
echo "即将进入crontroller模式,这将根据install.ini中您的所配置的(es,mq)是否使用外部来选择安装"
sleep 2
break
;;
exit)
echo "Good Bye!"
exit 0
;;
*)
echo "错误模式-请重新输入"
exit 127
esac
done
#是否使用外部组件
if [ ${INSTALL_MODE} == "all" ];then
echo -e "正在创建数据目录"
mkdir -p ${db_sc_dir}/data/{es_data,mq_data}
echo -e "正在创建日志目录"
mkdir -p ${app_sc_dir}/log
elif [ ${INSTALL_MODE} == "server" ];then
echo -e "正在创建日志目录"
mkdir -p ${app_sc_dir}/log
edit_es_info
edit_mq_info
elif [ ${INSTALL_MODE} == "controller" ];then
#判断es
if [ ${ES_ISUSE_STATUS} == 'false' ];then
echo -e "正在创建Elasticsearch数据目录"
mkdir -p ${db_sc_dir}/data/es_data
chown -R 1000:0 ${db_sc_dir}/data/es_data
compose_files="${compose_files} -f ${DB_DEPLOY_DIR}/docker-compose-es.yaml -f ${app_sc_dir}/docker-compose-searchcenter.yaml"
elif [ ${ES_ISUSE_STATUS} == 'true' ];then
edit_es_info
else
echo "es_isuse_status配置错误"
exit 127
fi
#判断mq
if [ ${MQ_ISUSE_STATUS} == 'false' ];then
echo -e "正在创建MQ数据目录"
mkdir -p ${db_sc_dir}/data/es_data
compose_files="${compose_files} -f ${DB_DEPLOY_DIR}/docker-compose-mq.yaml -f ${app_sc_dir}/docker-compose-searchcenter.yaml"
elif [ ${MQ_ISUSE_STATUS} == 'true' ];then
edit_mq_info
else
ehco "mq_isuse_status配置错误"
exit 127
fi
echo -e "正在创建日志目录"
mkdir -p ${app_sc_dir}/log
fi
#将所需要部署的组件ymal输出到文件
echo "${compose_files} ">${app_sc_dir}/compose_files
COMPOSE_FILE=$(cat ${app_sc_dir}/compose_files)
echo "即将启动docker-compose部署"
sudo docker-compose ${COMPOSE_FILE} up -d
}
function status(){
echo
cd ${app_sc_dir}
docker-compose ${COMPOSE_FILE} ps
}
function start(){
echo
cd ${app_sc_dir}
docker-compose ${COMPOSE_FILE} start
}
function stop(){
echo
cd ${app_sc_dir}
docker-compose ${COMPOSE_FILE} stop
}
function restart(){
echo
cd ${app_sc_dir}
docker-compose ${COMPOSE_FILE} stop
docker-compose ${COMPOSE_FILE} start
}
function uninstall(){
echo
cd ${app_sc_dir}
docker-compose ${COMPOSE_FILE} down
}
function main(){
case "${action}" in
status)
status
;;
start)
start
;;
stop)
stop
;;
restart)
restart
;;
uninstall)
uninstall
;;
--help)
usage
;;
-h)
usage
;;
install_compose-files)
# pwd
echo "即将执行方法install-compose"
install_compose-files
;;
*)
echo
cd ${app_sc_dir}
docker-compose ${COMPOSE_FILES} $@
;;
esac
}
main $@
#!/bin/bash
#set -e
#加载配置信息
function if_err(){
if [ $? -ne 0 ];then
exit 127
fi
}
source ./install.ini
#定义安装程序的app路径
DEPLOY_FILE=$(dirname $0)/Health-cloud-server/app_server
#定义安装程序的db路径
DB_DEPLOY_FILE=$(dirname $0)/Health-cloud-server/db_server
if [ ! -d ${DEPLOY_DIR} ];then mkdir -p ${DEPLOY_DIR};fi
#定义部署目标路径(app,db)
app_sc_dir=${DEPLOY_DIR}/${APP_NAME}
db_sc_dir=${DB_DEPLOY_DIR}
#将docker-compose工程部署到本机
if [[ ! -d ${app_sc_dir} && ! -f ~/.hcrc ]];then
cp -rf ${DEPLOY_FILE}/${APP_NAME} ${app_sc_dir}
cp -rf ${DB_DEPLOY_FILE} ${db_sc_dir}
if_err
else
echo "目标目录已安装${APP_NAME},请检查${app_sc_dir} .hcrc是否存在"
exit 127
fi
#将配置文件存入环境变量文件,使其全局生效(app和db目录各存一份)
cp ./install.ini ${app_sc_dir}/install.ini.example
cp ./install.ini ${db_sc_dir}/install.ini.example
env_context=$(cat ${app_sc_dir}/install.ini.example |grep -v "^#"|grep -v "^$")
echo "${env_context}">${app_sc_dir}/.env
echo "${env_context}">${db_sc_dir}/.env
source ${app_sc_dir}/.env
source ${db_sc_dir}/.env
ln -s ${app_sc_dir}/.env ${app_sc_dir}/install.ini 2>/dev/null
ln -s ${db_sc_dir}/.env ${db_sc_dir}/install.ini 2>/dev/null
#安装hcrc版本文件
echo -e "app_sc_dir=${app_sc_dir}\n db_sc_dir=${db_sc_dir}\n ${APP_NANME}版本${SC_IMAGE_VERSION}">~/.hcrc 2>/dev/null || echo ""
#安装hcctl管理命令
sudo cp hcctl /usr/local/bin && sudo chmod +x /usr/local/bin/hcctl
ln -s /usr/local/bin/hcctl /usr/bin/hcctl 2>/dev/null
cd ${app_sc_dir}
#--------------------部署-----------------------#
echo -e "----------安装向导------------"
echo -e "- all模式-->全部安装(主服务${APP_NAME}+数据库+队列)"
echo -e "- server模式-->只安装主服务${APP_NAME}(请注意提前修改install.ini中外部db和mq的连接配置)"
echo -e "- controller模式-->安装主服务${APP_NAME}+数据库 or 队列"
echo -e "------------------------------"
PS3='请选择安装模式: '
hcctl install_compose-files
if [ $? -ne 0 ];then
echo "安装过程出现错误,请查看相关配置..."
exit 127
fi
echo "${APP_NAME}服务已安装成功...."
sleep 2
echo -e "服务启动状态: "
sleep 2
sudo /usr/local/bin/hcctl status
sleep 2
echo "Good Bye ~"
#!/bin/bash
source ./install.ini
if [ -d ${DEPLOY_DIR} ];then
echo "Uninstalling APP Server Files..."
rm -rf ${DEPLOY_DIR}
else
echo "You are Not Install The APP Server"
exit 127
fi
if [ -d ${DB_DEPLOY_DIR} ];then
echo "Uninstalling DB Server Files..."
rm -rf ${DB_DEPLOY_DIR}
else
echo "You are Not Install The DB Server"
exit 127
fi
if [ -f ~/.hcrc ];then
echo "Deleting hcrc File..."
rm -rf ~/.hcrc
else
echo "You are Not Install The hcrc File"
exit 127
fi
echo "Uninstalling APP contried"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment