🔗n8n 如何与本地其他服务链接?
type
status
date
slug
summary
tags
category
icon
password
author
标签
第三方接入
这是一个关于 Docker 容器的基础问题,Docker 的所有默认容器会组件一个子网通过与宿主机连接,并且每个容器之间拥有独立的子网 IP。如果你没有注意到这一点,可能会在 n8n 中将其他本地服务的访问 IP 设置为 127.0.0.1 或 Loclhost,但这是无法访问的。
在这种情况下,我们要分两种方式处理:
1.你的另一个服务也是通过 Docker 部署
如果你的另一个服务也是通过 Docker 部署,你需要在 n8n 中填写另一个服务所在容器的
子网IP
地址。一般来说,如果你使用了图形化的 Docker 管理工具,这个 IP 都比较好找,它是这样的:
2.你的另一个服务直接部署在宿主机(也就是 Docker 之外)
如果你的另一个服务没有通过 Docker 部署,比如常见的 Ollama 的部署方式就是在宿主机一键运行。这时,你想要填写的是宿主机在 Docker 内网中的映射 IP。
一般来说,这个 IP 是你 Docker 子网段的第一个 IP。
以上图为例,我们会发现我的 Docker 子网的 IP 均为
172.18.0.x
。这意味着我的宿主机在 Docker 子网中的 IP 为 172.18.0.1
或 host.docker.internal
(Windows)。如果 Ollama 在宿主机上的端口为 6682,那么我应该通过
172.18.0.1:6682
来让 n8n 访问 Ollama。如果依然无法访问,你可能需要打开 Ollama 的局域网监听。
额外提示:
如果你的服务器经常重启,你可不能会发现 Docker 在重启后,每个容器的 IP 可能发生变动。如果我们在 n8n 中填写的其他服务 IP 是容器的子网 IP,可能会导致我们每次重启都要重新设置一次 IP 地址才能让服务之间正常链接。
但是,其实有一个小技巧可以不用这样做。
Docker 容器之间的访问,可以直接填写容器名。
仍然以上图为例,你看到我部署了一个博客程序 Wordpress,并且这个博客程序我适用了 Redis 作为缓存服务进行加速。我配置 Wordpress 中的 Redis 缓存时,原本应该填写 IP 的位置,我直接填写了 Redis 的容器名
1Panel-redis-yhUz
即可正常运行。这样,即便每次重启 Docker 或服务器,Redis 的 IP 地址发生变化,也无需重新配置 IP 地址。
上一篇
为什么我的n8n数据库越来越大?
下一篇
n8n 如何接入微信?
Loading...