首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将n8n部署到Heroku

将n8n部署到Heroku
EN

Stack Overflow用户
提问于 2020-04-15 11:53:22
回答 3查看 1.8K关注 0票数 2

我在通过Docker注册中心将n8n部署到Heroku时遇到了问题,并且无法确定我做错了什么。任何帮助都将不胜感激。

手动提供Postgres版本11:

代码语言:javascript
运行
复制
heroku addons:create heroku-postgresql:hobby-dev --version=11 -a my-app

Dockerfile:

代码语言:javascript
运行
复制
FROM n8nio/n8n

heroku.yml:

代码语言:javascript
运行
复制
setup:
  #addons:
  #  - plan: heroku-postgresql:hobby-dev
  #    version: 11
  #    as: DATABASE
  config:
    SUBDOMAIN: "my-app"
    DOMAIN_NAME: "herokuapp.com"
    NODE_ENV: "production"
    TZ: "Europe/Berlin"
    GENERIC_TIMEZONE: "Europe/Berlin"
    N8N_HOST: "${SUBDOMAIN}.${DOMAIN_NAME}"
    N8N_PORT: "${PORT}" #each app in heroku gets randomly assigned IP on start
    N8N_PROTOCOL: "https"
    N8N_ENCRYPTION_KEY: "mysupersecretkey"
    WEBHOOK_TUNNEL_URL: "https://${SUBDOMAIN}.${DOMAIN_NAME}/"
    VUE_APP_URL_BASE_API: "https://${SUBDOMAIN}.${DOMAIN_NAME}/"
    DB_TYPE: "postgresdb"
    DB_POSTGRESDB_HOST: "dbhost"
    DB_POSTGRESDB_DATABASE: "dbname"
    DB_POSTGRESDB_PORT: 5432
    DB_POSTGRESDB_USER: "dbuser"
    DB_POSTGRESDB_PASSWORD: "dbpass"

build:
    docker:
        web: Dockerfile

通过heroku logs --tail记录日志

代码语言:javascript
运行
复制
2020-04-15T11:19:50.178271+00:00 app[web.1]: [WARN  tini (3)] Tini is not running as PID 1 and isn't registered as a child subreaper.
2020-04-15T11:19:50.178300+00:00 app[web.1]: Zombie processes will not be re-parented to Tini, so zombie reaping won't work.
2020-04-15T11:19:50.178302+00:00 app[web.1]: To fix the problem, use the -s option or set the environment variable TINI_SUBREAPER to register Tini as a child subreaper, or run Tini as PID 1.
2020-04-15T11:19:50.179480+00:00 app[web.1]: su-exec: setgroups: Operation not permitted
2020-04-15T11:24:54.478493+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=my-app.herokuapp.com request_id=myid fwd="myip" dyno= connect= service= status=503 bytes= protocol=https
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-19 14:26:47

您需要稍微修改Dockerfile和entrypoint脚本。正如@VxJasonxV exec所提到的,sudo特权在Heroku上是不允许的。

这是我对集装箱的实现-

Heroku yml -

代码语言:javascript
运行
复制
build:
    docker:
        web: Dockerfile

Dockerfile -

代码语言:javascript
运行
复制
FROM node:12.16-alpine

# pass N8N_VERSION Argument while building or use default
ARG N8N_VERSION=0.62.1

# Update everything and install needed dependencies
RUN apk add --update graphicsmagick tzdata

# Set a custom user to not have n8n run as root
USER root

# Install n8n and the also temporary all the packages
# it needs to build it correctly.
RUN apk --update add --virtual build-dependencies python build-base && \
    npm_config_user=root npm install -g n8n@${N8N_VERSION} && \
    apk del build-dependencies

# Specifying work directory
WORKDIR /data

# copy start script to container
COPY ./start.sh /

# make the script executable
RUN chmod +x /start.sh

# define execution entrypoint
ENTRYPOINT ["/start.sh"]

入口点脚本

代码语言:javascript
运行
复制
#!/bin/sh

# check if port variable is set or go with default
if [ -z ${PORT+x} ]; then echo "PORT variable not defined, leaving N8N to default port."; else export N8N_PORT=$PORT; echo "N8N will start on '$PORT'"; fi

# kickstart nodemation
n8n

我已经创建了一个Github回购为同样,请看,我已经添加了一个良好的描述自述文件,希望它有帮助。https://github.com/sarveshpro/n8n-heroku

票数 5
EN

Stack Overflow用户

发布于 2020-04-16 20:07:00

这个su-exec错误听起来像是n8n需要根/提升的特权,这是您在Heroku上没有得到的。如果您必须以某种方式配置它以严格地运行“非特权”,请这样做。

票数 2
EN

Stack Overflow用户

发布于 2021-01-19 14:07:53

在Heroku上部署n8n的最简单方法是:

https://github.com/UnlyEd/n8n-heroku-demo

它允许您只需单击按钮就可以进行部署。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61228036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档