Docker环境中部署n8n支持Python节点(两种部署方式)

 更新时间:2026年02月09日 11:19:59   作者:rainbow6889  
本文介绍如何在Docker环境中部署n8n工作流自动化工具,并确保支持 Code in Python (Native) 节点,本文给大家分享两种常见的部署方式,感兴趣的朋友跟随小编一起看看吧

好的,我们来详细说明如何在 Docker 环境中部署 n8n 工作流自动化工具,并确保支持 Code in Python (Native) 节点。

一、使用 Docker 部署 n8n

n8n 官方提供了 Docker 镜像,部署非常方便。以下是两种常见的部署方式:

方法 1: 直接运行容器

这是最简单快捷的方式。

docker run -d \
  --name n8n \
  -p 5678:5678 \
  -e N8N_BASIC_AUTH_USER=<你的用户名> \
  -e N8N_BASIC_AUTH_PASSWORD=<你的强密码> \
  -v ~/.n8n:/home/node/.n8n \
  n8nio/n8n

参数解释:

  • -p 5678:5678: 将容器内的 5678 端口(n8n 默认端口)映射到宿主机的 5678 端口。你可以根据需要修改宿主机端口(如 -p 8080:5678)。
  • -e N8N_BASIC_AUTH_USER-e N8N_BASIC_AUTH_PASSWORD: 强烈建议设置,用于 Web UI 的基础认证(用户名/密码)。请替换 <你的用户名><你的强密码>
  • -v ~/.n8n:/home/node/.n8n: 将容器内存储 n8n 配置、工作流、凭证等数据的目录持久化挂载到宿主机的 ~/.n8n 目录。这样即使容器重启或删除,数据也不会丢失。你可以根据需要修改宿主机路径(如 /path/to/n8n/data:/home/node/.n8n)。
  • n8nio/n8n: 使用的官方镜像名称。

方法 2: 使用docker-compose(推荐)

使用 docker-compose.yml 文件管理更清晰,也方便后续扩展。

创建一个 docker-compose.yml 文件:

version: '3.8'
services:
  n8n:
    image: n8nio/n8n
    container_name: n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - N8N_BASIC_AUTH_USER=<你的用户名>
      - N8N_BASIC_AUTH_PASSWORD=<你的强密码>
      # 可选:设置时区 (例如 Asia/Shanghai)
      - TZ=Asia/Shanghai
      # 可选:禁用生产环境下的用户管理(仅用于本地开发/测试)
      # - N8N_DISABLE_PRODUCTION_MAIN_PROCESS=nginx
    volumes:
      - ./data:/home/node/.n8n
  • 同样,请替换 <你的用户名><你的强密码>
  • 将文件保存在一个目录(例如 n8n-docker),然后在该目录下运行:
docker-compose up -d

访问 n8n: 部署完成后,打开浏览器访问 http://<你的宿主机IP或域名>:5678 (例如 http://localhost:5678),输入设置的用户名和密码即可登录 n8n Web UI。

二、支持Code in Python (Native)节点

Code in Python (Native) 节点允许你在 n8n 工作流中直接运行 Python 3 代码。要使其正常工作,必须在运行 n8n 的容器内安装所需的 Python 依赖

步骤

进入 n8n 容器:

docker exec -it n8n /bin/bash

(如果使用 docker-compose 且服务名是 n8n,则用 docker-compose exec n8n /bin/bash)

安装 Python 依赖: 容器内已经预装了 Python 3 (通常是 3.8 或更高版本,具体取决于 n8n 镜像版本)。使用 pip 安装你需要的包。例如,安装常用的 requestspandas

pip install requests pandas

请根据你的工作流需求安装必要的包。

验证安装: 你可以尝试在容器内运行一个简单的 Python 命令检查包是否可用:

python -c "import requests; print(requests.__version__)"

退出容器:

exit

重要提示

  • Python 版本: n8n 的 Code in Python (Native) 节点需要 Python 3.8 或更高版本。官方 Docker 镜像通常会包含兼容的版本。
  • 容器重启: 由于容器是无状态的,通过 docker exec 安装的包在容器重启后会丢失。有几种解决方法:
    • (推荐) 构建自定义镜像: 创建一个 Dockerfile 基于 n8nio/n8n,并在其中使用 RUN pip install ... 命令安装你的依赖。然后使用这个自定义镜像来运行容器或更新 docker-compose.yml
    • 持久化 Python 环境 (高级): 可以将容器内的 Python 包安装路径(例如 /usr/local/lib/python3.8/site-packages)挂载到一个数据卷。但这需要确保宿主机路径上的包架构与容器内 Python 环境兼容,操作较复杂且有风险,通常不推荐。
    • 启动脚本:docker-compose.ymlentrypointcommand 覆盖中添加一个启动脚本,该脚本在 n8n 启动前检查并安装依赖。这需要编写额外的脚本逻辑。
  • 依赖管理: 对于复杂的项目,建议在容器内使用 requirements.txt 文件并通过 pip install -r requirements.txt 来管理依赖。

三、验证 Python 节点可用性

  1. 在 n8n Web UI 中创建一个新的工作流。
  2. 添加一个 Code 节点(在节点库搜索 "code")。
  3. 选择 Code in Python (Native) 作为模式。
  4. 在代码编辑框中输入简单的测试代码,例如:
    import requests
    print("Python is working!")
    print(f"Requests version: {requests.__version__}")
    return [{"output": "Success!"}]
    
  5. 执行该节点。如果配置正确,你应该能看到输出日志打印信息并成功返回结果。

通过以上步骤,你应该能够在 Docker 中成功部署 n8n 并配置好 Code in Python (Native) 节点的运行环境。

到此这篇关于Docker环境中部署n8n支持Python节点(两种部署方式)的文章就介绍到这了,更多相关Docker部署n8n内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Linux如何使用Docker部署DashDot访问本地服务器面板

    Linux如何使用Docker部署DashDot访问本地服务器面板

    DashDot是一款简单、实用的开源现代服务器仪表盘,主要应用于小型 VPS 和私人的服务器(比如说NAS),它是一个界面非常漂亮的监控服务器面板,这篇文章给大家介绍Linux使用Docker部署DashDot访问本地服务器面板的相关知识,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • Docker容器中数据卷volumes的使用

    Docker容器中数据卷volumes的使用

    volume(卷)用来存储docker持久化的数据,其实就是一个主机上的一个目录,由docker统一管理,下面这篇文章主要给大家介绍了关于Docker容器中数据卷volumes使用的相关资料,需要的朋友可以参考下
    2022-04-04
  • 使用Docker部署Spring Boot的实现方法

    使用Docker部署Spring Boot的实现方法

    这篇文章主要介绍了使用Docker部署Spring Boot的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 如何使用docker+frp进行内网穿透

    如何使用docker+frp进行内网穿透

    这篇文章主要介绍了使用docker+frp进行内网穿透,在公网上的ubuntu系统需要配置相关操作,本文给大家介绍的非常详细,需要的朋友可以参考下
    2024-04-04
  • Docker 配置阿里云容器服务操作

    Docker 配置阿里云容器服务操作

    这篇文章主要介绍了Docker 配置阿里云容器服务操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 清理或删除docker无用镜像的操作方法

    清理或删除docker无用镜像的操作方法

    这篇文章主要介绍了清理或删除docker无用镜像的操作方法,清除docker无用镜像首先查看docker占用的资源,只删除那些未被使用的资源,文中给大家补充介绍了docker 批量删除无用的容器或镜像的方法,感兴趣的朋友一起看看吧
    2023-01-01
  • 释放Docker占用的存储空间的几种方法

    释放Docker占用的存储空间的几种方法

    随着Docker的广泛应用,我们经常会遇到Docker占用过多存储空间的问题,这可能是由于频繁的镜像拉取、容器创建和删除等操作导致的,本文将介绍几种方法来有效释放Docker占用的存储空间,需要的朋友可以参考下
    2024-06-06
  • docker如何部署带有界面的registry仓库

    docker如何部署带有界面的registry仓库

    这篇文章主要介绍了docker如何部署带有界面的registry仓库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Docker复制现有容器的实现方法

    Docker复制现有容器的实现方法

    在使用Docker进行应用开发和部署时,我们经常需要基于现有的容器创建相似的环境,本文主要介绍了Docker复制现有容器的实现方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • keepalived+nginx+httpd实现的双机热备+负载均衡

    keepalived+nginx+httpd实现的双机热备+负载均衡

    本文主要介绍了keepalived + nginx + httpd 实现的双机热备+负载均衡,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-07-07

最新评论