首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Ansible docker_container,如何显示标准输出?(标准输出)

使用Ansible docker_container,如何显示标准输出?(标准输出)
EN

Stack Overflow用户
提问于 2016-11-16 14:56:53
回答 3查看 6.7K关注 0票数 13

我正在使用Ansible及其模块docker_container在nodejs中启动磁带单元测试容器。这很好,因为我不需要让npm弄乱我的主机,我唯一的dev box依赖是python和docker。

我需要能够看到stdout才能看到测试是否已经运行。但是,Docker的--attach选项没有在docker_container中公开,我找不到任何方法让stdout从容器的ansible启动中打印出来。

我可以回到bash脚本来启动docker容器,但我不希望...

如何使用Ansible的docker_container模块显示容器的标准输出?

EN

回答 3

Stack Overflow用户

发布于 2018-08-15 21:40:26

这实际上适用于Ansible v2.5,通过使用detach属性:

代码语言:javascript
运行
复制
- name: Run the tests
  docker_container:
    detach: false
    name: "foo-container"
    command: npm test
  register: docker_container_output

- name: Show test output
  debug:
    msg: "{{ docker_container_output.ansible_facts.docker_container.Output }}"

- name: Remove the test container
  docker_container:
    state: absent
    name: "foo-container"

指定detach: false来捕获输出,然后使用ansible_facts.docker_container.Output路径访问结果,这一点很重要。

票数 20
EN

Stack Overflow用户

发布于 2016-11-16 17:47:45

不要使用Ansible来运行简单的单元测试。Ansible让复杂的事情变得简单,让简单的事情变得复杂。

下面的bash脚本有4行,Ansible剧本已经有25行,但由于并发问题和输出格式问题(我相信我会找到更多),它们仍然没有完全发挥作用。

Ansible for docker仍然太新,不容易处理并发问题,缺少docker功能等,可能只应该在做一些bash不容易处理的复杂事情时使用(比如处理远程服务器、重试等)。

代码语言:javascript
运行
复制
#!/bin/bash
docker build -t server-unit-test .
docker run -it --name server-unit-test server-unit-test npm test
docker rm server-unit-test
票数 1
EN

Stack Overflow用户

发布于 2016-11-16 15:02:38

您可以使用以下命令查看docker容器的日志...docker logs containerName。要根据日志的级别打印日志,如跟踪、信息等,请尝试supervisord。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40625832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档