问题描述
我的 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 来说也不方便。
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 (将#修改为@)