#!/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}"