🔗n8n 如何与本地其他服务链接?

type
status
date
slug
summary
tags
category
icon
password
author
标签
第三方接入

问题描述

我的 n8n 通过 Docker 部署,同时我在同一台服务器上部署了一些其他服务(比如 Ollama),我希望 n8n 能够调用这些服务,该如何操作?
这是一个关于 Docker 容器的基础问题,Docker 的所有默认容器会组件一个子网通过与宿主机连接,并且每个容器之间拥有独立的子网 IP。如果你没有注意到这一点,可能会在 n8n 中将其他本地服务的访问 IP 设置为 127.0.0.1 或 Loclhost,但这是无法访问的。
在这种情况下,我们要分两种方式处理:
1.你的另一个服务也是通过 Docker 部署
如果你的另一个服务也是通过 Docker 部署,你需要在 n8n 中填写另一个服务所在容器的 子网IP 地址。一般来说,如果你使用了图形化的 Docker 管理工具,这个 IP 都比较好找,它是这样的:
notion image
2.你的另一个服务直接部署在宿主机(也就是 Docker 之外)
如果你的另一个服务没有通过 Docker 部署,比如常见的 Ollama 的部署方式就是在宿主机一键运行。这时,你想要填写的是宿主机在 Docker 内网中的映射 IP。
一般来说,这个 IP 是你 Docker 子网段的第一个 IP。
以上图为例,我们会发现我的 Docker 子网的 IP 均为 172.18.0.x 。这意味着我的宿主机在 Docker 子网中的 IP 为 172.18.0.1host.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...