gradio-5.35.0/build-and-run.sh

54 lines
1.3 KiB
Bash

#!/bin/bash
set -e
set -o pipefail
# ======== 配置参数 ========
IMAGE_NAME="gradio-local:5.35.0"
CONTAINER_NAME="gradio-container"
GIT_DIR="./gradio-5.35.0"
PORT=7860
PROXY_URL="http://127.0.0.1:7890"
echo "🛠️ 开始构建并部署 Gradio 镜像..."
# ======== 检查旧容器并删除 ========
if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
echo "🛑 停止并删除旧容器 ${CONTAINER_NAME}..."
docker stop "${CONTAINER_NAME}" || true
docker rm "${CONTAINER_NAME}" || true
fi
# ======== 删除旧镜像(如果存在) ========
if docker images --format '{{.Repository}}:{{.Tag}}' | grep -q "^${IMAGE_NAME}$"; then
echo "🧹 删除旧镜像 ${IMAGE_NAME}..."
docker rmi "${IMAGE_NAME}" || true
fi
# ======== 拉取最新代码 ========
if [ ! -d "${GIT_DIR}/.git" ]; then
echo "❌ 找不到 Git 仓库目录:${GIT_DIR}"
exit 1
fi
echo "📥 拉取最新代码..."
cd "${GIT_DIR}"
git reset --hard
git pull
cd ..
# ======== 构建 Docker 镜像 ========
echo "🐳 开始构建 Docker 镜像..."
docker build \
-t "${IMAGE_NAME}" \
-f "${GIT_DIR}/Dockerfile" \
"${GIT_DIR}"
# ======== 启动容器 ========
echo "🚀 启动 Gradio 容器(后台运行)..."
docker run -d \
--name "${CONTAINER_NAME}" \
"${IMAGE_NAME}"
echo "✅ Gradio 容器已启动成功,监听端口 ${PORT}"