gpt4 book ai didi

docker - github 工作流程 : "ECONNREFUSED 127.0.0.1:***" error when connecting to docker container

转载 作者:行者123 更新时间:2023-12-02 20:29:51 24 4
gpt4 key购买 nike

在我的 github 操作工作流程中,我在运行我的 jest 测试脚本时收到此错误 (ECONNREFUSED)。该测试使用 axios 连接到我的 api,该 api 在通过 docker-compose 引导的容器中运行(在 github 工作流程本身期间创建)。该网络只有 2 个容器:api 和 postgres。所以我假设我的测试脚本在“主机网络”(github 工作流程)上,但它无法通过容器的映射端口到达 docker 网络。

  • 然后我完全跳过了 jest 测试,只是尝试直接对容器执行 ping 操作。没用。
  • 然后我修改了工作流程以检查本应创建的默认 docker 网络:

更新 1

我已经缩小问题范围如下。当我修改撰写文件以依赖默认网络时(我的撰写文件中不再有 networks:):

Screenshot of network description

所以看起来容器从未连接到默认桥接网络。

更新 2

看来我的范式不对。阅读此文后:https://help.github.com/en/actions/configuring-and-managing-workflows/about-service-containers我意识到这根本不是 GA 期望我们实例化容器的方式。看起来我应该在工作流文件中使用 services: 节点,而不是使用我自己的 docker-compose 文件中的容器。 🤔 会试试看...

最佳答案

所以答案是:

  1. 不要使用 docker-compose 构建您自己的自定义容器。 GA 尚不支持此功能。
  2. 使用services:在您的工作流程 .yml 文件中启动您的容器,它必须是公共(public) docker 图像。如果您的容器基于私有(private)镜像或自定义 dockerfile,则 GA 尚不支持。

因此,我不得不:

  1. 创建 postgres as a service container在我的 github 工作流 .yml 中
  2. 将我在 package.json 中的测试命令更改为:
    • 首先将 api 作为后台进程启动(因为我无法从中创建自己的 docker 镜像 🙄)然后
    • 接下来调用我的测试框架(作为前台进程)

所以 npm run start & npm run <test launch cmds> .这奏效了。

关于docker - github 工作流程 : "ECONNREFUSED 127.0.0.1:***" error when connecting to docker container,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62504968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com