44 lines
1.2 KiB
Bash
44 lines
1.2 KiB
Bash
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
IMAGE_NAME="evalscope-full"
|
|
CONTAINER_NAME="evalscope-container"
|
|
SRC_DIR="evalscope.0.17.0"
|
|
|
|
echo "📍 当前目录: $(pwd)"
|
|
|
|
# ======== 1. 停止并删除旧容器 ========
|
|
if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
|
|
echo "🛑 停止旧容器:$CONTAINER_NAME"
|
|
docker stop "$CONTAINER_NAME" || true
|
|
echo "🧹 删除旧容器:$CONTAINER_NAME"
|
|
docker rm "$CONTAINER_NAME"
|
|
fi
|
|
|
|
# ======== 2. 删除旧镜像 ========
|
|
if docker images -a | grep -q "^${IMAGE_NAME}"; then
|
|
echo "🗑️ 删除旧镜像:$IMAGE_NAME"
|
|
docker rmi -f "$IMAGE_NAME"
|
|
fi
|
|
|
|
# ======== 3. Git 拉取最新代码 ========
|
|
if [ -d "$SRC_DIR/.git" ]; then
|
|
echo "🔄 拉取最新源码:$SRC_DIR"
|
|
cd "$SRC_DIR"
|
|
git reset --hard
|
|
git pull origin $(git rev-parse --abbrev-ref HEAD)
|
|
cd ..
|
|
else
|
|
echo "❌ 错误:$SRC_DIR 不是 git 仓库"
|
|
exit 1
|
|
fi
|
|
|
|
# ======== 4. 构建镜像 ========
|
|
echo "🔧 开始构建镜像:$IMAGE_NAME"
|
|
docker build -t "$IMAGE_NAME" .
|
|
|
|
# ======== 5. 运行容器 ========
|
|
echo "🚀 启动容器:$CONTAINER_NAME"
|
|
docker run --rm --name "$CONTAINER_NAME" "$IMAGE_NAME"
|
|
|