我们有一个 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 无法公开端口,端口似乎已关闭。我发现它是容器没有启动,奇怪的是没有为此抛出任何错误。
根据官方文档上的指南(感谢此步骤:https://github.com/n8n-io/n8n/issues/8272)应使用卷挂载。就我而言,为了不模糊文件夹结构等,我以这种形式做到了:
volumes:
n8n_data:
driver: local
driver_opts:
type: none
o: bind
device: ./DOCKER/n8n/data