test
This commit is contained in:
119
pre-deploy-check.sh
Executable file
119
pre-deploy-check.sh
Executable file
@@ -0,0 +1,119 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 部署前检查脚本
|
||||
set -e
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
echo -e "${GREEN}=== 数字档案系统部署前检查 ===${NC}"
|
||||
|
||||
# 检查参数
|
||||
if [ $# -eq 0 ]; then
|
||||
echo -e "${RED}用法: $0 <部署目录>${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
DEPLOY_DIR=$1
|
||||
|
||||
# 1. 检查Docker环境
|
||||
echo -e "${YELLOW}1. 检查Docker环境...${NC}"
|
||||
if ! command -v docker &> /dev/null; then
|
||||
echo -e "${RED}错误: Docker未安装${NC}"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${GREEN}Docker版本: $(docker --version)${NC}"
|
||||
|
||||
# 2. 检查Docker Compose
|
||||
echo -e "${YELLOW}2. 检查Docker Compose...${NC}"
|
||||
if docker compose version &> /dev/null; then
|
||||
COMPOSE_CMD="docker compose"
|
||||
elif command -v docker-compose &> /dev/null; then
|
||||
COMPOSE_CMD="docker-compose"
|
||||
else
|
||||
echo -e "${RED}错误: Docker Compose未安装${NC}"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${GREEN}使用命令: ${COMPOSE_CMD}${NC}"
|
||||
|
||||
# 3. 检查proxy网络
|
||||
echo -e "${YELLOW}3. 检查proxy网络...${NC}"
|
||||
if ! docker network ls | grep -q proxy; then
|
||||
echo -e "${RED}错误: proxy网络不存在${NC}"
|
||||
echo -e "${YELLOW}请创建网络: docker network create proxy${NC}"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${GREEN}proxy网络存在${NC}"
|
||||
|
||||
# 4. 检查MySQL容器
|
||||
echo -e "${YELLOW}4. 检查MySQL容器...${NC}"
|
||||
MYSQL_CONTAINER=$(docker network inspect proxy --format '{{range .Containers}}{{.Name}} {{end}}' | tr ' ' '\n' | grep -i mysql | head -1 || true)
|
||||
if [ -z "$MYSQL_CONTAINER" ]; then
|
||||
echo -e "${RED}错误: proxy网络中未找到MySQL容器${NC}"
|
||||
echo -e "${YELLOW}请确保MySQL容器已启动并连接到proxy网络${NC}"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${GREEN}找到MySQL容器: ${MYSQL_CONTAINER}${NC}"
|
||||
|
||||
# 5. 检查Redis容器
|
||||
echo -e "${YELLOW}5. 检查Redis容器...${NC}"
|
||||
REDIS_CONTAINER=$(docker network inspect proxy --format '{{range .Containers}}{{.Name}} {{end}}' | tr ' ' '\n' | grep -i redis | head -1 || true)
|
||||
if [ -z "$REDIS_CONTAINER" ]; then
|
||||
echo -e "${RED}错误: proxy网络中未找到Redis容器${NC}"
|
||||
echo -e "${YELLOW}请确保Redis容器已启动并连接到proxy网络${NC}"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${GREEN}找到Redis容器: ${REDIS_CONTAINER}${NC}"
|
||||
|
||||
# 6. 检查镜像
|
||||
echo -e "${YELLOW}6. 检查应用镜像...${NC}"
|
||||
if ! docker images | grep -q digital-archive; then
|
||||
echo -e "${RED}错误: digital-archive镜像不存在${NC}"
|
||||
echo -e "${YELLOW}请先运行: ./build.sh${NC}"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${GREEN}digital-archive镜像存在${NC}"
|
||||
|
||||
# 7. 检查部署目录
|
||||
echo -e "${YELLOW}7. 检查部署目录...${NC}"
|
||||
if [ -d "$DEPLOY_DIR" ]; then
|
||||
echo -e "${YELLOW}部署目录已存在: ${DEPLOY_DIR}${NC}"
|
||||
read -p "是否继续部署到现有目录? (y/N): " -n 1 -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo -e "${YELLOW}部署已取消${NC}"
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
echo -e "${GREEN}创建新部署目录: ${DEPLOY_DIR}${NC}"
|
||||
fi
|
||||
|
||||
# 8. 测试网络连通性
|
||||
echo -e "${YELLOW}8. 测试网络连通性...${NC}"
|
||||
if docker run --rm --network proxy alpine ping -c 1 mysql &> /dev/null; then
|
||||
echo -e "${GREEN}可以连接MySQL容器${NC}"
|
||||
else
|
||||
echo -e "${RED}无法连接MySQL容器${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if docker run --rm --network proxy alpine ping -c 1 redis &> /dev/null; then
|
||||
echo -e "${GREEN}可以连接Redis容器${NC}"
|
||||
else
|
||||
echo -e "${RED}无法连接Redis容器${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 9. 显示部署信息
|
||||
echo -e "${GREEN}=== 部署信息 ===${NC}"
|
||||
echo -e "${YELLOW}部署目录: ${DEPLOY_DIR}${NC}"
|
||||
echo -e "${YELLOW}MySQL容器: ${MYSQL_CONTAINER}${NC}"
|
||||
echo -e "${YELLOW}Redis容器: ${REDIS_CONTAINER}${NC}"
|
||||
echo -e "${YELLOW}网络: proxy${NC}"
|
||||
echo -e "${YELLOW}Docker Compose: ${COMPOSE_CMD}${NC}"
|
||||
|
||||
echo -e "${GREEN}检查完成,可以开始部署!${NC}"
|
||||
echo -e "${YELLOW}运行部署命令: ./deploy.sh ${DEPLOY_DIR}${NC}"
|
||||
Reference in New Issue
Block a user