部署 Dify 遇到 failed to connect https://registry-1.docker.io/v2 的解决方案

在按照 Dify 官方文档通过 Docker Compose 部署 Dify 社区版至阿里云服务器的过程中,执行 docker-compose up -d 时出现如下错误:

1
2
3
4
5
6
7
8
[root@iZbp1h8smwi4n6ownjrnndZ docker]# docker-compose up -d
[+] Running 5/5
✘ plugin_daemon Error 15.2s
✘ sandbox Error 15.2s
✘ web Error 15.2s
✘ api Error 15.2s
✘ worker Error 15.2s
Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded (Client.Timeout exceeded while awaiting headers)

部署过程中多个服务(如 web、api、worker 等)因无法访问 Docker Hub 而启动失败。

经过在 Dify 官方 Discussions 区查找类似问题,并结合自身部署环境进行排查和实践,最终成功解决了该连接超时的问题。本文将详细记录排查思路和解决过程,供遇到相同问题的用户参考。

docker-compose.yaml里面,所有镜像前面没有自带域名的都增加前缀docker.1ms.run/,比如:

1
2
3
4
5
6
7
8
......
services:
# API service
api:
image: docker.1ms.run/langgenius/dify-api:1.6.0
restart: always
environment:
......

镜像前面有自带域名的不需要进行替换,比如:

1
2
3
4
5
6
7
8
......
# Chroma vector database
chroma:
image: ghcr.io/chroma-core/chroma:0.5.20
profiles:
- chroma
restart: always
......

🚫 以下镜像源的地址无需添加代理前缀:

保持原样即可,否则可能导致拉取失败或找不到镜像。

  • ghcr.io
  • container-registry.oracle.com
  • quay.io
  • docker.elastic.co
  • downloads.unstructured.io

然后再执行docker-compose up -d由于网络问题,可能运行时间比较长一些,最终成功部署了Dify

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@iZbp1h8smwi4n6ownjrnndZ docker]# docker-compose up -d
[+] Running 62/31
✔ plugin_daemon 5 layers [⣿⣿⣿⣿⣿] 0B/0B Pulled 946.6s
✔ db 11 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 802.4s
✔ nginx 7 layers [⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 90.3s
✔ web 13 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 1074.9s
✔ worker 12 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 1177.7s
✔ redis 7 layers [⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 521.6s
✔ api Pulled 1177.7s


[+] Running 12/12
✔ Network docker_ssrf_proxy_network Created 0.0s
✔ Network docker_default Created 0.0s
✔ Container docker-db-1 Healthy 2.6s
✔ Container docker-ssrf_proxy-1 Started 2.5s
✔ Container docker-weaviate-1 Started 2.6s
✔ Container docker-web-1 Started 2.5s
✔ Container docker-sandbox-1 Started 2.6s
✔ Container docker-redis-1 Started 2.6s
✔ Container docker-plugin_daemon-1 Started 0.1s
✔ Container docker-worker-1 Started 0.2s
✔ Container docker-api-1 Started 0.1s
✔ Container docker-nginx-1 Created 0.1s
Error response from daemon: driver failed programming external connectivity on endpoint docker-nginx-1 (f3792af83f322d586ee81652a4cff317bfc26a2c1dfded712b586fc2c695f92b): Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use

由于服务器上的80端口被占用了,所以报错了,在配置文件.env里修改一下

80换成其他端口号

1
EXPOSE_NGINX_PORT=8088

然后在执行一下docker-compose up -d,也可以先执行一下docker-compose down移除服务

如果不使用443端口,可以在docker-compose.yaml文件里将443端口注释掉

1
2
3
ports:
- '${EXPOSE_NGINX_PORT:-80}:${NGINX_PORT:-80}'
#- '${EXPOSE_NGINX_SSL_PORT:-443}:${NGINX_SSL_PORT:-443}'

这样基本上就完成了Dify的部署

坚持原创技术分享,您的支持将鼓励我继续创作!
0%