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"