【Dify】CentOS 7 and 8 部署Dify

#!/bin/bash
set -euo pipefail

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

# 日志函数
info() { echo -e "${GREEN}[INFO] $1${NC}"; }
warn() { echo -e "${YELLOW}[WARN] $1${NC}"; }
error() { echo -e "${RED}[ERROR] $1${NC}"; exit 1; }

# 1. 系统校验
check_os() {
    info "校验系统版本..."
    if ! grep -E "CentOS Linux release 7|CentOS Linux release 8|CentOS Stream" /etc/redhat-release &>/dev/null; then
        error "仅支持 CentOS7/8/Stream 系统"
    fi
}

# 2. root权限校验
check_root() {
    info "校验执行权限..."
    if [ "$(id -u)" -ne 0 ]; then
        error "请使用 root 权限执行脚本!"
    fi
}

# 3. 检查并安装 Docker Compose 插件(强校验)
check_docker_compose() {
    info "检查 Docker Compose 插件..."
    
    # 检查插件文件
    if [ ! -f /usr/libexec/docker/cli-plugins/docker-compose ]; then
        info "未检测到 compose 插件,开始安装..."
        yum install -y docker-compose-plugin || error "Docker Compose 插件安装失败"
    fi

    # 创建软链接(CentOS7 必须)
    ln -sf /usr/libexec/docker/cli-plugins/docker-compose /usr/bin/docker-compose
    chmod +x /usr/bin/docker-compose

    # 最终校验命令是否可用
    if ! docker compose version &>/dev/null; then
        error "Docker Compose 不可用,请检查 Docker 安装"
    fi

    info "Docker Compose 正常可用 ✅"
}

# 4. 安装 Docker
install_docker() {
    info "安装依赖工具..."
    yum install -y yum-utils git

    info "添加阿里云 Docker 源..."
    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    info "安装 Docker + Compose 插件(完整组件)..."
    yum install -y docker-ce docker-ce-cli containerd.io \
        docker-buildx-plugin docker-compose-plugin

    info "启动 Docker..."
    systemctl start docker
    systemctl enable docker

    # 强制校验 compose
    check_docker_compose
}

# 5. 部署 Dify
deploy_dify() {
    info "开始部署 Dify..."
    cd /root

    if [ ! -d "dify" ]; then
        git clone https://gitee.com/dify_ai/dify.git || error "克隆失败"
    fi
    cd dify/docker

    if [ ! -f ".env" ]; then
        cp .env.example .env
    fi

    info "拉取镜像..."
    docker compose pull

    info "启动服务..."
    docker compose up -d

    sleep 3
    docker compose ps | grep "Up" || error "启动失败"
}

# 主流程
main() {
    check_root
    check_os

    if ! command -v docker &>/dev/null; then
        install_docker
    else
        check_docker_compose
        systemctl start docker
    fi

    deploy_dify

    info "======================================"
    info "部署成功!"
    info "访问地址:http://$(hostname -I | awk '{print $1}')"
    info "查看状态:cd /root/dify/docker && docker compose ps"
    info "======================================"
}

main
posted @ 2026-05-19 06:21  静心笃行。  阅读(32)  评论(0)    收藏  举报