如何在molecular.yml中的销毁步骤期间为Docker驱动程序定义环境变量

问题描述

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

这是我得到的错误

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

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

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

  • 重启docker服务: systemctl start docker
  • 使用环境变量更改超时:
export DOCKER_CLIENT_TIMEOUT=120
export COMPOSE_HTTP_TIMEOUT=120

重新启动 docker 并不能解决我的问题,而且对我的 CI runner 来说也不方便。

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

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

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

我也尝试在molecular.yml的驱动部分定义它们,但无济于事:

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

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

有没有办法给Docker驱动提供环境变量?

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

  • Python 3.6.8
  • ansible 2.10.3
  • 分子 3.2.0 使用 python 3.6
    • ansible:2.10.3
    • delegated:3.2.0 from 分子
    • docker:0.2.4 来自molecular_docker
  • Docker 版本 19.03.14,构建 5eb3275d40
  • GitLab 社区版 13.7.1
  • gitlab-runner 13.6.0

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...