35 lines
1.2 KiB
Bash
35 lines
1.2 KiB
Bash
#!/bin/bash
|
||
|
||
set -e # 出错立即终止整个脚本
|
||
|
||
# 设置变量
|
||
CONTAINER_NAME="license"
|
||
IMAGE_NAME="license-server"
|
||
IMAGE_TAG="1.0.0"
|
||
GIT_REPO_DIR="/home/ceshi/work/license-server" # ⚠️ 请修改为你的实际路径
|
||
PORT=13579
|
||
|
||
FULL_IMAGE_NAME="${IMAGE_NAME}:${IMAGE_TAG}"
|
||
|
||
echo "===> Step 1: 停止并删除老的容器..."
|
||
docker stop $CONTAINER_NAME 2>/dev/null || true
|
||
docker rm $CONTAINER_NAME 2>/dev/null || true
|
||
|
||
echo "===> Step 2: 删除旧镜像(如有)..."
|
||
docker rmi $FULL_IMAGE_NAME 2>/dev/null || true
|
||
|
||
echo "===> Step 3: 拉取最新代码..."
|
||
cd "$GIT_REPO_DIR" || { echo "❌ 找不到目录 $GIT_REPO_DIR"; exit 1; }
|
||
git pull || { echo "❌ git pull 失败"; exit 1; }
|
||
|
||
echo "===> Step 3.5: 自动生成 go.sum(执行 go mod tidy)..."
|
||
go mod tidy || { echo "❌ go mod tidy 失败"; exit 1; }
|
||
|
||
echo "===> Step 4: 构建新镜像 $FULL_IMAGE_NAME..."
|
||
docker build -t $FULL_IMAGE_NAME . || { echo "❌ Docker build 失败"; exit 1; }
|
||
|
||
echo "===> Step 5: 启动新容器..."
|
||
docker run -d --name $CONTAINER_NAME -p $PORT:$PORT $FULL_IMAGE_NAME || { echo "❌ Docker 启动失败"; exit 1; }
|
||
|
||
echo "✅ 部署完成,服务运行在端口 $PORT,镜像版本为 $FULL_IMAGE_NAME"
|