57 lines
1.5 KiB
Bash
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" ]; then
|
|
echo "❌ 当前目录不是 Git 仓库,请在 gradio 仓库目录内运行。"
|
|
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}"
|
|
|