GitHub 管道中的 n8n 无法公开端口

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

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

requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=5678): Max retries exceeded with url: /api/v1/credentials (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f3d28e3d810>: Failed to establish a new connection: [Errno 111] Connection refused'))

受影响的服务是一个 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

我们尝试使用 Python requests 库通过 FastAPI API 来访问它。这两个系统之间有什么区别? docker compose 是相同的,env 文件正在由我们的测试脚本重置。

更新

我将可重现的问题最小化为以下内容:

curl --fail http://localhost:8080 || exit 1
curl --fail http://localhost:5678/api/v1/docs/ || exit 1

在我的 docker compose 中,我有两个服务,一个在 8080 上工作,另一个在 n8n 上不工作。上面的代码在第二行失败,并出现错误

curl: (7) Failed to connect to localhost port 5678 after 0 ms: Connection refused
。我还尝试切换端口,以防 GitHub 操作已使用此端口。

python docker docker-compose github-actions fastapi
1个回答
1
投票

编辑代码以使用主机 n8n 而不是 localhost。

该服务绑定到名为 n8n 的主机,而不是 localhost。

来自 https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idservices

如果您将作业配置为在容器中运行,或者您的步骤使用容器操作,则无需映射端口来访问服务或操作。 Docker 自动公开同一 Docker 用户定义的桥接网络上容器之间的所有端口。您可以通过主机名直接引用服务容器。主机名会自动映射到您在工作流程中为服务配置的标签名称。

© www.soinside.com 2019 - 2024. All rights reserved.