我正在使用Ansible及其模块docker_container
在nodejs中启动磁带单元测试容器。这很好,因为我不需要让npm弄乱我的主机,我唯一的dev box依赖是python和docker。
我需要能够看到stdout
才能看到测试是否已经运行。但是,Docker的--attach
选项没有在docker_container
中公开,我找不到任何方法让stdout
从容器的ansible启动中打印出来。
我可以回到bash脚本来启动docker容器,但我不希望...
如何使用Ansible的docker_container模块显示容器的标准输出?
发布于 2018-08-15 21:40:26
这实际上适用于Ansible v2.5,通过使用detach
属性:
- 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
路径访问结果,这一点很重要。
发布于 2016-11-16 17:47:45
不要使用Ansible来运行简单的单元测试。Ansible让复杂的事情变得简单,让简单的事情变得复杂。
下面的bash脚本有4行,Ansible剧本已经有25行,但由于并发问题和输出格式问题(我相信我会找到更多),它们仍然没有完全发挥作用。
Ansible for docker仍然太新,不容易处理并发问题,缺少docker功能等,可能只应该在做一些bash不容易处理的复杂事情时使用(比如处理远程服务器、重试等)。
#!/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
发布于 2016-11-16 15:02:38
您可以使用以下命令查看docker容器的日志...docker logs containerName
。要根据日志的级别打印日志,如跟踪、信息等,请尝试supervisord。
https://stackoverflow.com/questions/40625832
复制相似问题