2016-11-16 134 views
1

我使用Ansible及其模块docker_container在nodejs中启动磁带机测试容器。这很好,因为我不必让npm弄糟我的主机,我唯一的开发盒依赖是python和docker。使用Ansible docker_container,我该如何显示标准? (标准输出)

我需要能够看到stdout才能看到测试已经运行。但是,Docker的--attach选项未在docker_container中公开,我无法找到任何方式从容器的正确启动中打印出stdout

我可以回去的bash脚本启动Docker容器,但我宁愿不要......

我怎样才能显示一个容器的标准输出与Ansible的docker_container模块?

+0

它回到bash脚本。美化输出已经死了任何解决方案,我可以想出,有可怕的比赛使用ansible,我必须重新编译泊坞窗图像每次反正....可能矫枉过正使用这个用例。 –

回答

0

您可以使用此命令查看码头集装箱的日志... docker logs containerName。要根据TRACE,INFO等的级别打印日志,请尝试supervisord。

+0

不是一个完整的答案,因为ansible仍然会吞下所有stdout –

+0

任务'docker logs'和'docker_container'之间也存在竞争条件。通常'docker_logs'赢得... –

+0

并且在更多新闻中,ansible完全打破了'Ansible Up and Running'Oreilly书中记载的'等待'功能。 Uhoh。 –

0

请勿使用Ansible进行简单的单元测试。 Ansible使复杂的事情变得简单而容易。

以下bash脚本是4行,Ansible playbook已经在25行,并且由于并发问题和输出格式问题(我确信我会找到更多)仍然不能完全运行。

Ansible对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 
相关问题