首页 > 解决方案 > 如何在分子.yml 的销毁步骤中为 Docker 驱动程序定义环境变量

问题描述

我的 CI 管道在运行的最后销毁阶段失败,molecule test因为关闭 Docker 容器的默认超时时间不够大。

这是我得到的错误:

msg: 'Error removing container c6fff0374c2d8dc2b20ed991152ce8db5bbdf05a635c26648ce3c0a82c491eb2: UnixHTTPConnectionPool(host=''localhost'', port=None): Read timed out. (read timeout=60)'

似乎我的容器太大和/或我的 CI 运行器机器功能不够强大,无法在 60 秒默认超时内完成。

以下是我在此主题上找到的建议:

export DOCKER_CLIENT_TIMEOUT=120
export COMPOSE_HTTP_TIMEOUT=120

重新启动 docker 并不能解决我的问题,而且在我的 CI 运行器上也不方便。

我尝试在molecule.yml中添加这样的环境变量:

provisioner:
  name: ansible
  env:
    MOLECULE_NO_LOG: "false"
    DOCKER_CLIENT_TIMEOUT: "240"
    COMPOSE_HTTP_TIMEOUT: "240"

但是 Docker 似乎没有得到它们,因为我仍然收到相同的错误消息 specifiying (read timeout=60)

无济于事,我还尝试在分子.yml 的驱动程序部分中定义它们:

driver:
  name: docker
  env:
    DOCKER_CLIENT_TIMEOUT: "240"
    COMPOSE_HTTP_TIMEOUT: "240"

我成功结束工作的唯一方法是当时针对单个主机运行测试,我想这减少了我的 CI 运行器在 60 秒内关闭容器所需的资源。然而,这不是一个合适的解决方案,因为它需要人为地复杂化我的工作定义。

没有办法为 Docker 驱动程序提供环境变量吗?

作为记录,这是我的设置:

标签: dockeransiblemolecule

解决方案


推荐阅读