首页 > 解决方案 > n8n 的持久存储

问题描述

我正在使用带有使用 Jelastic 的云托管服务的 Docker 容器运行 n8n

我把它启动并运行得很好,但我无法让持久存储工作。因此,当我重新启动容器时,我会丢失所有的工作流程和凭据。在我的环境拓扑中,我创建了一个卷,类似于我在本地机器上拥有的卷(它确实保留了存储),但这并没有奏效。 环境存储

我是一名技术产品经理,在某种程度上是半能干的,但事实证明这超出了我的想象。

非常感谢您的帮助!

标签: jelasticn8n

解决方案


如果我们严格遵循n8n 文档,我们将无法重现上述问题,尽管社区中有一个线程“ Can't get data to persist after system off/on ”就此事与 n8n 创始人一起结束,但没有找到任何根本原因。

我们将在此提供使用 Docker Engine CE 在 Jelastic 平台上的分步部署过程。

有很多可用的选项,但我们将停止其中的一些。

第一个选项是仅使用 Docker Engine CE,添加和不添加

  1. 按照仪表板中的Marketplace选项卡,选择 Docker Engine CE并部署它

  2. 打开web ssh控制台并完全按照官方文档中的说明部署 n8n 应用程序

    docker run -it --rm --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n n8nio/n8n

在 Jelastic 中,~/.n8n 的路径是 /root/.n8n,所以两个文件(config 和 database.sqlite)是在指定的路径中创建的。他们负责保存数据和工作流程。

  1. 如果您想使用 Jelastic卷功能,您可以像这里所做的那样将默认路径 /root/.n8n 添加到本地文件系统。在这种情况下,此卷会在重新部署期间保存,并且还会出现在收藏夹中,以便快速访问文件。

部署应用程序后可以使用的另一个选项是使用导出数据功能共享配置文件。它有助于将所需的文件共享到另一个节点/环境。

  1. 如上所述部署 Docker Engine CE(步骤 1)。

  2. 更改环境拓扑并添加Extra Storage 节点或使用Extra Storage 节点创建单独的环境

  3. 按照相应文档中的步骤共享例如 /data 目录到 Docker 引擎节点 /root/.n8n。在这种情况下,来自 /root/.n8n 的所有数据实际上都将存在于 Extra Storage 节点上的 /data 目录中。

  4. 部署 n8n 应用程序

    docker run -it --rm --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n n8nio/n8n

提到的文件将在 Docker Engine 节点上可用,但实际上它们位于 /data 目录中的 Extra Storage 节点上。如果 /root/.n8n 目录被卸载或 Docker Engine 节点意外删除/崩溃/等,所有文件仍将存在于 Extra Storage 节点上。

请注意,该项目应通过控制台以与官方文档中提到的相同方式运行(相应的步骤 2 或步骤 4)。卷 -v 选项 ( -v ~/.n8n:/home/node/.n8n ) 是必须使用的。如果项目在没有 '-v' 选项的情况下运行,则所有工作流都保存在 docker 容器中,并在控制台中的会话关闭或 docker 容器停止后永久删除(默认使用选项 --rm)。

'--restart always' 可用于在节点/环境重新启动后运行应用程序,例如

docker run --restart always --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n n8nio/n8n

禁用“--restart always”选项,您可以使用

docker update --restart=no $(docker ps -a -q)

总结:您可以使用上述步骤运行 n8n 应用程序,它应该可以正常运行。如有任何情况,请通过您的托管服务提供商与我们联系,我们将竭诚为您提供帮助。


推荐阅读