You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.6 KiB
Bash

#!/bin/sh
# 定义应用组名和名称
group_name='venue_reservation_service'
app_name=${DRONE_REPO_NAME}
app_version='latest'
# 验证必要变量
if [ -z "$app_name" ]; then
echo "ERROR: DRONE_REPO_NAME not set!"
exit 1
fi
# 1. 安全停止容器
if docker ps | grep -q ${app_name}; then
echo "----Stopping container: ${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" \
-v /etc/localtime:/etc/localtime \
-d ${image_name}
echo "----部署完成! 容器 ${app_name} 已启动----"
echo "已映射端口: 9020 (应用端口) 和 9030 (管理端口)"