源自开源项目:
https://github.com/other-blowsnow/n8n-i18n-chinese

仓库里的docker部署的相关代码和代码文件我觉得太简单了,适合用来测试。但功能上还是差点意思,不少节点的使用会受到限制。所以,我自己测试调整了部署参数。

关于版本号

文章是kayin在1.94.1版本的时候写的,版本已经不是最新的了,
无论是 Docker 还是 Docker Compose 部署,其中的 n8nio/n8n:1.94.1 版本号都可以根据佬友的需求进行修改。佬友可以尝试使用 latest 标签来获取最新版本,或者前往 n8n 官方 GitHub 仓库查看并选择特定的版本号:

https://github.com/n8n-io/n8n

自定义参数部署 n8n
通过自定义参数,我们可以更灵活地配置 n8n,例如实现数据持久化、解除访问限制等。部署方式:

  1. Docker 方式部署
    docker run -d \ --name n8ntest \ -p 15678:5678 \ -e N8N_DEFAULT_LOCALE=zh-CN \ -e N8N_SECURE_COOKIE=false \ # 免cookie安全(本地开发环境建议) -e N8N_HOST=0.0.0.0 \ # 允许所有ip访问(不再仅本机) -e N8N_RUNNERS_ENABLED=true \ # 启用工作流执行器 -v $(pwd)/editor-ui-dist:/usr/local/lib/node_modules/n8n/node_modules/n8n-editor-ui/dist \ -v n8n_data:/home/node/.n8n \ # 持久化存储,重启和升级不丢工作流 -v $(pwd)/data:/data \ # 自定义目录(部分节点可监听本地文件) --restart unless-stopped \ -it \ n8nio/n8n:1.94.1

  2. Docker Compose 方式部署
    使用 Docker Compose 部署时,在从代码仓库 git clone 并 git checkout 到目标版本后,需要对 docker-compose.yml 文件进行如下配置:
    `version: '3.8'

services:
n8ntest:
image: n8nio/n8n:1.94.1
container_name: n8ntest
ports:

  • "15678:5678"
    environment:
  • N8N_DEFAULT_LOCALE=zh-CN
  • N8N_SECURE_COOKIE=false # 免cookie安全(本地开发环境建议)
  • N8N_HOST=0.0.0.0 # 允许所有ip访问(不再仅本机)
  • N8N_RUNNERS_ENABLED=true # 启用工作流执行器
    volumes:
  • ./editor-ui-dist:/usr/local/lib/node_modules/n8n/node_modules/n8n-editor-ui/dist
  • n8n_data:/home/node/.n8n # 持久化存储,重启和升级不丢工作流
  • ./data:/data # 自定义目录(部分节点可监听本地文件)
    stdin_open: true
    tty: true
    restart: unless-stopped

volumes: # 持久化存储对应使用的docker卷
n8n_data:
name: n8n_data`

自定义部署的好处
简简单单的调整能方便不少:

解除了官版部署方式只能本地访问的限制。
将工作流数据持久化,可以便利地进行升级,不担心已有工作流丢失。
还有高手?
如果只是为了快速体验和简单测试,上述的自定义参数已经足够应付很多情况了。这不够?还想要执行python命令?

玩过的佬友都知道,n8n上的code节点打开默认是基于js代码的,虽然可以选择python,但使用起来会发现,功能受限,无法安装第三方库。因为n8n自带的python方法是基于 Pyodide 技术,在nodejs环境中模拟了python的运行环境。别说第三方库了,原生库也是受限的,氪金也解决不了。

有什么办法能够在n8n上玩转python?

有的有的。

使用docker或者docker compose命令创建n8n环境前,先创建一个Dockerfile

FROM n8nio/n8n
RUN apk add --update python3 py3-pip
这时候n8n就有了执行python的能力

执行命令进行新镜像的构建

docker build -t n8n-python .
此时使用docker images可以看到一个n8n-python的新镜像

将这个新镜像替换掉前面的docker命令或者docker compose 文件中的image参数就可以在容器启动后的n8n中使用Execute Command节点中实现python3语句的调用

佬友们应该想到了,细化Dockerfile,在语句 RUN apk add --update python3 py3-pip语句后面添加更多的细节,使用pip install命令安装更多自己想用的pip包,那么就存在更多的可能了。

同样的道理,其他语言也应当适用。

可能佬友还有疑惑:我已经运行了,重新构建会影响现有的工作流数据嘛?
碰到这种情况,前文说的数据持久化可就发挥大作用了。