gradio-5.35.0/build-and-run.sh

57 lines
1.5 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 \
--build-arg proxy="${PROXY_URL}" \
--network=host \
-t "${IMAGE_NAME}" \
-f Dockerfile . # 你应当把 Dockerfile 放在当前目录(或加路径)
# ======== 启动容器 ========
echo "🚀 启动 Gradio 容器(后台运行)..."
docker run -d \
--name "${CONTAINER_NAME}" \
--network=host \
"${IMAGE_NAME}"
echo "✅ Gradio 容器已启动成功,监听端口 ${PORT}"