83 lines
2.0 KiB
Bash
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 "构建成功" |