From 03c1b6a4877691537e4ba92178046a26da4460e7 Mon Sep 17 00:00:00 2001 From: xucheng Date: Thu, 15 Jan 2026 15:47:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20update-and-run.sh?= =?UTF-8?q?=20=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- update-and-run.sh | 57 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100755 update-and-run.sh diff --git a/update-and-run.sh b/update-and-run.sh new file mode 100755 index 0000000..0722ec3 --- /dev/null +++ b/update-and-run.sh @@ -0,0 +1,57 @@ +#!/bin/bash +# FA3-Datafetch 自动更新脚本 +# 用于在远程服务器上拉取最新代码并重新部署 Docker 容器 + +set -e + +# 颜色定义 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +echo -e "${GREEN}========================================${NC}" +echo -e "${GREEN} FA3-Datafetch 自动更新脚本${NC}" +echo -e "${GREEN}========================================${NC}" + +# 切换到脚本所在目录 +cd "$(dirname "$0")" + +# 1. 拉取最新代码 +echo -e "\n${YELLOW}[1/4] 拉取最新代码...${NC}" +git fetch origin +git pull origin main +echo -e "${GREEN}✓ 代码更新完成${NC}" + +# 2. 停止旧容器(如果存在) +CONTAINER_NAME="fa3-app" +echo -e "\n${YELLOW}[2/4] 停止旧容器...${NC}" +if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then + docker stop $CONTAINER_NAME 2>/dev/null || true + docker rm $CONTAINER_NAME 2>/dev/null || true + echo -e "${GREEN}✓ 旧容器已停止并删除${NC}" +else + echo -e "${GREEN}✓ 没有运行中的旧容器${NC}" +fi + +# 3. 重新构建 Docker 镜像 +echo -e "\n${YELLOW}[3/4] 重新构建 Docker 镜像...${NC}" +echo -e " 这可能需要几分钟时间..." +docker build -t fa3-datafetch . +echo -e "${GREEN}✓ Docker 镜像构建完成${NC}" + +# 4. 启动新容器 +echo -e "\n${YELLOW}[4/4] 启动新容器...${NC}" +./docker-run.sh +echo -e "${GREEN}✓ 新容器已启动${NC}" + +# 清理未使用的镜像(可选) +echo -e "\n${YELLOW}清理旧镜像...${NC}" +docker image prune -f +echo -e "${GREEN}✓ 清理完成${NC}" + +echo -e "\n${GREEN}========================================${NC}" +echo -e "${GREEN} 更新完成!${NC}" +echo -e "${GREEN}========================================${NC}" +echo -e "查看日志: docker logs -f $CONTAINER_NAME" +echo -e "进入容器: docker exec -it $CONTAINER_NAME sh"