|
|
@ -1,22 +1,55 @@
|
|
|
|
#!/bin/sh
|
|
|
|
#!/bin/sh
|
|
|
|
# 定义应用组名
|
|
|
|
# 定义应用组名和名称
|
|
|
|
group_name='venue_reservation_service'
|
|
|
|
group_name='venue_reservation_service'
|
|
|
|
# 定义应用名称 ,这里的name是获取你仓库的名称,也可以自己写
|
|
|
|
|
|
|
|
app_name=${DRONE_REPO_NAME}
|
|
|
|
app_name=${DRONE_REPO_NAME}
|
|
|
|
# 定义应用版本
|
|
|
|
|
|
|
|
app_version='latest'
|
|
|
|
app_version='latest'
|
|
|
|
echo '----copy jar----'
|
|
|
|
|
|
|
|
docker stop ${app_name}
|
|
|
|
# 验证必要变量
|
|
|
|
echo '----stop container----'
|
|
|
|
if [ -z "$app_name" ]; then
|
|
|
|
docker rm ${app_name}
|
|
|
|
echo "ERROR: DRONE_REPO_NAME not set!"
|
|
|
|
echo '----rm container----'
|
|
|
|
exit 1
|
|
|
|
docker rmi ${group_name}/${app_name}:${app_version}
|
|
|
|
fi
|
|
|
|
echo '----rm image----'
|
|
|
|
|
|
|
|
# 打包编译docker镜像
|
|
|
|
# 1. 安全停止容器
|
|
|
|
docker build -t ${group_name}/${app_name}:${app_version} .
|
|
|
|
if docker ps | grep -q ${app_name}; then
|
|
|
|
echo '----build image----'
|
|
|
|
echo "----Stopping container: ${app_name}----"
|
|
|
|
docker run -p 9020:9020 --name ${app_name} \
|
|
|
|
docker stop ${app_name} || echo "警告: 容器停止失败,但继续执行"
|
|
|
|
|
|
|
|
elif docker ps -a | grep -q ${app_name}; then
|
|
|
|
|
|
|
|
echo "容器 ${app_name} 已停止,跳过停止命令"
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
echo "容器 ${app_name} 不存在,无需停止"
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 2. 安全删除容器
|
|
|
|
|
|
|
|
if docker ps -a | grep -q ${app_name}; then
|
|
|
|
|
|
|
|
echo "----Removing container: ${app_name}----"
|
|
|
|
|
|
|
|
docker rm ${app_name} || echo "警告: 容器删除失败,但继续执行"
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
echo "容器 ${app_name} 不存在,无需删除"
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 3. 安全删除镜像
|
|
|
|
|
|
|
|
image_name="${group_name}/${app_name}:${app_version}"
|
|
|
|
|
|
|
|
if docker images | grep -q "${group_name}/${app_name}.*${app_version}"; then
|
|
|
|
|
|
|
|
echo "----Removing image: ${image_name}----"
|
|
|
|
|
|
|
|
docker rmi ${image_name} || echo "警告: 镜像删除失败,但继续执行"
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
echo "镜像 ${image_name} 不存在,无需删除"
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 4. 构建新镜像
|
|
|
|
|
|
|
|
echo "----Building image: ${image_name}----"
|
|
|
|
|
|
|
|
docker build -t ${image_name} .
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 5. 带双端口映射运行容器
|
|
|
|
|
|
|
|
echo "----Starting container with port mapping (9020 & 9030)----"
|
|
|
|
|
|
|
|
docker run \
|
|
|
|
|
|
|
|
--name ${app_name} \
|
|
|
|
|
|
|
|
-p 9020:9020 \
|
|
|
|
|
|
|
|
-p 9030:9030 \
|
|
|
|
-e TZ="Asia/Shanghai" \
|
|
|
|
-e TZ="Asia/Shanghai" \
|
|
|
|
-v /etc/localtime:/etc/localtime \
|
|
|
|
-v /etc/localtime:/etc/localtime \
|
|
|
|
-d ${group_name}/${app_name}:${app_version}
|
|
|
|
-d ${image_name}
|
|
|
|
echo '----start container----'
|
|
|
|
|
|
|
|
|
|
|
|
echo "----部署完成! 容器 ${app_name} 已启动----"
|
|
|
|
|
|
|
|
echo "已映射端口: 9020 (应用端口) 和 9030 (管理端口)"
|