为什么 n8n 在 GitHub 管道中失败,但在本地却失败?

问题描述 投票:0回答:1

我们有一个 docker compose,需要它来测试我们的代码。当我们在本地(macOS,不同的主机)运行它时,它工作正常,但是一旦我们在 GitHub 操作运行器上运行它,它就会失败并显示

Error: EACCES: permission denied, open '/home/node/.n8n/config'

受影响的服务是一个 n8n 容器,它应该公开一个 HTTP API,该 API 也可以在本地运行。

  n8n:
    image: docker.n8n.io/n8nio/n8n
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=n8n:5678
      - N8N_PORT=5678
      - N8N_PROTOCOL=http
      - NODE_ENV=production
      - DB_TYPE=postgresdb
      - DB_TABLE_PREFIX=n8n_
      - DB_POSTGRESDB_DATABASE=n8n
    volumes:
      - ./DOCKER/n8n/data:/home/node/.n8n
      - ./DOCKER/n8n/files:/files

GitHub 操作管道的工作原理如下:

sudo useradd -m node
mkdir -p DOCKER/n8n
sudo chmod -R 777 DOCKER/n8n
sudo chown -R node:node DOCKER/n8n
docker-compose up -d

我加了777的overkill权限来调试,之前也是不行的。但通过这种方式,我可以确保理论上它应该拥有所需的所有访问权限。我还删除了 chown,用 runner:runner 和当前版本执行 chown,所有这些都失败并显示相同的消息。

这是我的问题的后续:GitHub 管道中的 n8n 无法公开端口,端口似乎已关闭。我发现它是容器没有启动,奇怪的是没有为此抛出任何错误。

docker-compose github-actions n8n
1个回答
0
投票

根据官方文档上的指南(感谢此步骤:https://github.com/n8n-io/n8n/issues/8272)应使用卷挂载。就我而言,为了不模糊文件夹结构等,我以这种形式做到了:

volumes:
  n8n_data:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: ./DOCKER/n8n/data
© www.soinside.com 2019 - 2024. All rights reserved.