前言
n8n 官方的 Docker 镜像使用预先指定的用户运行,这在某些特定环境(例如 rootless podman 或 rootless docker)中可能会引发文件权限问题。
本文提供了一个极简的 n8n Dockerfile,直接使用 npm 命令安装 n8n,易于理解且能有效避免权限困扰。
Dockerfile
|
|
Dockerfile 解析:
FROM node:alpine
: 使用轻量的node:alpine
作为基础镜像。ARG N8N_VERSION
: 将 n8n 版本定义为构建参数,方便后续升级,只需修改此处的版本号即可。ENV
:N8N_USER_FOLDER=/data
: 指定 n8n 的数据存储目录。NODE_ENV=production
: 设置为生产环境模式。
RUN
:- 使用
apk
安装 n8n 运行所需的系统依赖。 - 通过
npm
全局安装指定版本的 n8n。 - 清理 npm 缓存以减小镜像体积。
- 使用
VOLUME /data
: 声明/data
目录为数据卷,用于持久化存储 n8n 的数据。WORKDIR /data
: 设置工作目录为/data
。ENTRYPOINT ["n8n", "start"]
: 定义容器启动时执行的命令。
环境变量
运行时,可以通过环境变量来配置 n8n 的行为。以下是一些常用的环境变量:
|
|
运行容器
使用以下命令来构建和运行 n8n 容器。
1. 构建镜像
|
|
2. 运行容器
|
|
命令解析:
-d
: 后台运行容器。--name=n8n
: 为容器指定一个名称。-p 5678:5678
: 将主机的 5678 端口映射到容器的 5678 端口。-v /path/to/local/n8n_data:/data
: 将本地目录挂载到容器的/data
目录,用于持久化存储数据。请务必将/path/to/local/n8n_data
替换为你的实际路径。-e
: 设置环境变量。--restart always
: 使容器在退出时总是自动重启。