hospital-applets-api/hospital-deploy.sh
2023-05-11 13:10:18 +08:00

83 lines
2.0 KiB
Bash

#!/bin/bash
#进入项目目录
#cd /Users/wucongxing/Desktop/work/php/hospital-applets-api || exit
cd /data/www/hospital-applets-api || exit
#nginx_upstrame="/Users/wucongxing/Desktop/test/hospital-upstream.conf"
nginx_upstrame="/etc/nginx/upstream/hospital-upstream.conf"
#echo nginx_upstrame
#确定可使用端口
online_port=0
reload_port=0
ports_list=(9508 9509)
for i in "${ports_list[@]}";
do
ports_count=$(lsof -i:$i | wc -l)
if [[ $ports_count -eq 0 ]]; then
# 未占用 可使用
reload_port=$i
fi
if [[ $ports_count -ne 0 ]]; then
# 占用 需重启
online_port=$i
fi
done
if [[ $online_port == 0 ]]; then
reload_port=${ports_list[1]}
else
echo "当前端口 $online_port 使用中"
echo "重启使用端口 $reload_port"
fi
if [[ $reload_port == 0 ]]; then
echo '部署失败, 未获取到可用端口'
exit 1;
fi
# 定义负载
upstrame="
upstream hospital {
server 127.0.0.1:$reload_port;
}
"
echo "$upstrame" > $nginx_upstrame
#获取可用端口镜像数量
image=$(docker images "hospital-applets-api-$reload_port" | wc -l)
if [[ $image -eq 1 ]];then
# 无可用端口镜像
# 可用端口构建镜像
echo '可用端口构建镜像'
docker build -t "hospital-applets-api-$reload_port" .
else
# 存在可用端口镜像,删除镜像容器
docker rm "hospital-applets-api-$reload_port"
echo '可用端口构建镜像'
docker build -t "hospital-applets-api-$reload_port" .
fi
echo '启动新端口容器'
docker run --name "hospital-applets-api-$reload_port" --restart=always -d -p "$reload_port":9501 -v /var/log/hospital-applets-api/:/opt/www/runtime/logs "hospital-applets-api-$reload_port":latest
echo '重启nginx'
nginx -s reload
if [[ $online_port -ne 0 ]]; then
echo '停止原端口容器'
docker stop "hospital-applets-api-$online_port"
echo '删除原端口容器'
docker rm "hospital-applets-api-$online_port"
echo '删除原端口镜像'
docker rmi "hospital-applets-api-$online_port"
fi
echo "构建成功"