| FROM ubuntu:20.04 | |
| # 安装基础依赖 | |
| RUN apt-get update && apt-get install -y curl ca-certificates openssl | |
| # 创建非 root 用户并设置主目录 | |
| RUN useradd -m -d /home/node -s /bin/bash node | |
| # 安装 Node.js 18.x | |
| RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \ | |
| apt-get install -y nodejs | |
| # 全局安装 n8n(指定旧版本兼容 --port 参数,或使用新版本环境变量) | |
| # 方案1: 使用新版 + 环境变量(推荐) | |
| RUN npm install -g n8n | |
| # 方案2: 回退到支持 --port 的旧版本(不推荐) | |
| # RUN npm install -g n8n@0.239.0 | |
| # 修复权限:创建必要目录并赋权 | |
| RUN mkdir -p /home/node/.n8n /data && \ | |
| chown -R node:node /home/node/.n8n /data | |
| # 切换到非 root 用户 | |
| USER node | |
| ENV HOME=/home/node | |
| WORKDIR $HOME/app | |
| # 设置环境变量(新版本必须通过环境变量配置) | |
| ENV N8N_PORT=7860 | |
| ENV N8N_HOST=0.0.0.0 | |
| # 暴露端口 | |
| EXPOSE 7860 | |
| # 启动命令(不再需要 --port 参数) | |
| CMD ["n8n", "start"] |