考虑到一般公司内网或者学校等特定网络可能有网络限制,因此无法直接执行一键安装脚本命令来安装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_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
评论记录:
回复评论: