考虑到一般公司内网或者学校等特定网络可能有网络限制,因此无法直接执行一键安装脚本命令来安装docker,故采用安装包形式安装。

1.基础环境

OS: CENTOS-7.9

2.docker安装

2.1, 下载安装包

#(在线)脚本命令:

sudo curl -fsSL https://gitee.com/tech-shrimp/docker_installer/releases/download/latest/linux.sh | bash -s docker --mirror Aliyun

由于网络限制, 无法直接使用官方脚本自动安装,采用安装包下载

(离线)安装包:

访问https://download.docker.com/linux/static/stable/,

选择x86 64/, 随后选择docker-27.3.1.tgz(至少20.10以上版本)

下载后将安装包上传至服务器,ls一下即可看到对应的安装包

(要明确在哪个目录下,比如我的服务器是在/tmp下)

 2.2, 上传至服务器

cd /tmp   #对应目录下

tar -xvf docker-27.3.1.tgz    # 解压安装包:

chmod 755 -R docker   # 赋予可执行权限

cp docker/* /usr/bin/     # 复制docker到/usr/bin/目录下,全局可执行的docker命令

vim /etc/systemd/system/docker.service  # 创建docker服务配置文件docker.service

(输入i插入,esc切换格式,:wq退出。)

#========================================================================================= 

[Unit]

Description=Docker Application Container Engine

Documentation=https://docs.docker.com

After=network-online.target firewalld.service

Wants=network-online.target



[Service]

Type=notify

ExecStart=/usr/bin/dockerd

ExecReload=/bin/kill -s HUP $MAINPID



TimeoutSec=0



RestartSec=2



ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT

Restart=always



TimeoutStartSec=0



LimitNOFILE=infinity

LimitNPROC=infinity



LimitCORE=infinity



Delegate=yes

KillMode=process

StartLimitBurst=3

StartLimitInterval=60s



[Install]

WantedBy=multi-user.target

#=========================================================================================

修改完之后,赋予执行权限

chmod +x /etc/systemd/system/docker.service

启动docker服务即可

systemctl start docker

(一些其他命令)

systemctl enable docker.service  # 开机自启动

systemctl status docker    # 查看服务

systemctl stop docker   # 停止服务

docker --version   # 查看版本

3, docker-compose安装

 3.1, 下载安装包

访问https://github.com/docker/compose/tags

选择v20.3.1  ---   点击download下载 --- 选择linux-x86_64链接下载

下载后将安装包上传至服务器

 3.2, 上传至服务器

在tmp下ls一下能看到如下文件即可

cp -f docker-compose-linux-x86_64 /usr/local/bin/docker-compose   #复制docker-compose到/usr/local/bin/目录下

chmod +x /usr/local/bin/docker-compose  #赋予可执行权限

docker-compose --version   # 查看版本

 4, 部署dify

4.1.进入目录

首先进入到自己想存放dify的目录下,比如我存在data目录下

sudo git clone https://github.com/langgenius/dify.git

4.2.部署

等待拉取完成后ls一下,查看有个dify的文件夹,表示成功拉取下来了

4.3.赋予权限

将前面安装的docker和docker-compose都cp过来,并赋予执行权限

这里有个注意点,即复制docker时不能直接cp docker/* /data/dify,
因为dify下有个docker文件夹,这样的话,会导致报错,正确命令如下:

cp docker/* /data/dify/docker    # 复制docker

chmod +x /data/dify/docker   # 赋予可执行权限

cp -f docker-compose-linux-x86_64 /data/dify/docker-compose   # 复制docker-compose

chmod +x /data/dify/docker-compose   # 赋予可执行权限

4.4.运行dify

cd /data/dify/docker   # 先切换到自己的目录

sudo docker-compose up -d   # 运行

(ps:会有点慢,等待ing)

可能出现的报错:

# 1,error:sudo: docker-compose: command not found   一般是docker-compose没有正确安装

# 可能的解决方案:

# ①存在权限问题,要给他赋予权限:

chmod +x docker-compose

# ②使用完整路径执行:

sudo /data/dify/docker-compose up -d

# 2,error:The "DB_DATABASE" variable is not set. Defaulting to a blank string. ......缺少环境变量

# 解决方案:

# 创建.env文件并设置环境变量:(根据yaml问价你的默认值进行设置)

echo "DB_DATABASE=dify" > .env

echo "DB_USERNAME=postgres" >> .env

echo "DB_PASSWORD=difyai123456" >> .env

echo "CERTBOT_EMAIL=ysl@xxx.net" >> .env

echo "CERTBOT_DOMAIN=10.xx.x.180.com" >> .env

#3,Error response from daemon: Get "https://registry-1.docker.io/v2/ ": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)    网络限制,导致启动Docker时,无法从Docker Hub拉取所需的镜像

# 解决方案:

# 打开Docker配置文件,/etc/docker/daemon.json,新增一些镜像加速器地址

sudo vim /etc/docker/daemon.json
#=========================================================================================

{

  "registry-mirrors": [

    "https://docker.1ms.run",

    "https://docker.xuanyuan.me",

    "https://docker.m.daocloud.io",

    "https://hub-mirror.c.163.com",

    "https://dockercf.jsdelivr.fyi",

    "https://docker.jsdelivr.fyi",

    "https://dockertest.jsdelivr.fyi",

    "https://mirror.aliyuncs.com",

    "https://dockerproxy.com",

    "https://mirror.baidubce.com",

    "https://docker.m.daocloud.io",

    "https://docker.nju.edu.cn",

    "https://docker.mirrors.sjtug.sjtu.edu.cn",

    "https://docker.mirrors.ustc.edu.cn",

    "https://mirror.iscas.ac.cn",

    "https://docker.rainbond.cc"

  ]

}

#=========================================================================================

随后再次运行命令

sudo /data/dify/docker-compose up -d  

完成后

sudo docker ps

看到有个nginx的容器,且对外访问的是80端口,即可测试

 5, 安装Cpolar

5.1, 安装

curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash

5.2, 启动服务

sudo systemctl enable cpolar   # 加入系统服务设置开机启动

sudo systemctl start cpolar   # 启动cpolar服务

# (可选)其他命令:

sudo systemctl restart cpolar   # 重启cpolar服务

sudo systemctl status cpolar  # 查看cpolar服务状态

sudo systemctl stop cpolar   # 停止cpolar服务

5.3, 启动cpolar

1.登录http://10.16.3.180:9200

2.注册账户,eg:

账号ysl@xxx

密码difyai123456

3.创建一个dify的公网http地址隧道

隧道名称:可自定义命名,注意不要与已有的隧道名称重复

协议:选择http

本地地址:80 (docker部署后对外访问的端口)

域名类型:免费选择随机域名

地区:选择China-top

在在线隧道列表中即可看见生成的随机公网地址

即可根据cpolar生成的随机公网地址进行访问

(ps:随机公网地址一般是临时的,24小时内会变化,随后可以重新申请)

5.4,启动dify

使用前面环境中定义的账号密码,即可登录dify

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐