docker - 如何在分子.yml 的销毁步骤中为 Docker 驱动程序定义环境变量
问题描述
我的 CI 管道在运行的最后销毁阶段失败,molecule test
因为关闭 Docker 容器的默认超时时间不够大。
这是我得到的错误:
msg: 'Error removing container c6fff0374c2d8dc2b20ed991152ce8db5bbdf05a635c26648ce3c0a82c491eb2: UnixHTTPConnectionPool(host=''localhost'', port=None): Read timed out. (read timeout=60)'
似乎我的容器太大和/或我的 CI 运行器机器功能不够强大,无法在 60 秒默认超时内完成。
以下是我在此主题上找到的建议:
- 重启docker服务:
systemctl start docker
- 使用环境变量更改 tiemout:
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 驱动程序提供环境变量吗?
作为记录,这是我的设置:
- Python 3.6.8
- 可靠的 2.10.3
- 分子 3.2.0 使用 python 3.6
- 可靠:2.10.3
- 委托:3.2.0 来自分子
- 泊坞窗:0.2.4 来自分子泊坞窗
- Docker 版本 19.03.14,构建 5eb3275d40
- GitLab 社区版 13.7.1
- gitlab-runner 13.6.0
解决方案
推荐阅读
- c# - 如何调整默认 HTML 代码以匹配模板布局?
- javascript - 尝试使用基于内容高度自动扩展和收缩的文本区域创建 React 组件(使用沙盒)
- postgresql - 比较和更新另一个数据库中的表:“必须出现在分组依据”错误
- c# - 使用C#删除字符串中的最后2行?
- c - Fprintf 没有将数据打印到文件中
- javascript - 使用 JavaScript 创建表
- ios - 如何修复宽度、高度和变换的 ios 过渡?
- java - 是否可以在线部署 Java SE 应用程序?
- graph - Keras Erro:图表断开连接
- typescript - 并非所有代码路径都返回一个值(对于可调用的谷歌云函数)