FA3-Datafetch/update-and-run.sh
xucheng 2a02a4030a feat: 优化 Docker 部署配置和健康检查
- 添加 WeasyPrint 依赖以支持 PDF 导出功能
- 新增 docker-entrypoint.sh 统一管理容器启动流程
- 添加容器健康检查机制(/health 端点)
- 配置容器自动重启策略(unless-stopped)
- 优化日志输出,仅使用 stdout 适配容器环境
- 改进 update-and-run.sh 添加健康状态检查
- 统一脚本中的 sudo 使用规范
2026-01-16 12:14:43 +08:00

72 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
# FA3-Datafetch 自动更新脚本
# 用于在远程服务器上拉取最新代码并重新部署 Docker 容器
set -e
# 固定使用 sudo
DOCKER="sudo docker"
SUDO="sudo"
# 颜色定义
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/3] 拉取最新代码...${NC}"
git fetch origin
git pull origin main
echo -e "${GREEN}✓ 代码更新完成${NC}"
# 2. 重新构建 Docker 镜像
echo -e "\n${YELLOW}[2/3] 重新构建 Docker 镜像...${NC}"
echo -e " 这可能需要几分钟时间..."
$DOCKER build --network=host -t fa3-datafetch .
echo -e "${GREEN}✓ Docker 镜像构建完成${NC}"
# 3. 启动新容器
echo -e "\n${YELLOW}[3/3] 启动新容器...${NC}"
./docker-run.sh
echo -e "${GREEN}✓ 新容器已启动${NC}"
# 等待容器启动并检查健康状态
echo -e "\n${YELLOW}等待容器启动...${NC}"
sleep 5
# 检查容器状态
if $DOCKER ps --format '{{.Names}}' | grep -q "^fa3-app$"; then
echo -e "${GREEN}✓ 容器运行中${NC}"
# 显示容器日志(最后几行)
echo -e "\n${YELLOW}最新日志:${NC}"
$DOCKER logs fa3-app --tail 10
# 检查健康状态
HEALTH_STATUS=$($DOCKER inspect fa3-app --format='{{.State.Health.Status}}' 2>/dev/null || echo "checking")
echo -e "\n健康状态: ${GREEN}$HEALTH_STATUS${NC}"
else
echo -e "${RED}✗ 容器启动失败${NC}"
echo -e "查看错误日志: $DOCKER logs fa3-app"
exit 1
fi
# 清理未使用的镜像
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 fa3-app"
echo -e "进入容器: $DOCKER exec -it fa3-app sh"