簡體   English   中英

使用Ansible docker_container,如何顯示標准輸出? (標准輸出)

[英]Using Ansible docker_container, how can I display standard out? (stdout)

我正在使用Ansible及其模塊docker_containerdocker_container中啟動磁帶單元測試容器。 這很好,因為我沒有讓npm搞砸我的主機,我唯一的開發盒依賴是python和docker。

我需要能夠看到stdout才能看到測試已經運行。 但是,Docker的--attach選項沒有在docker_containerdocker_container ,我找不到任何方法從容器的ansible啟動中打印出stdout

我可以回到bash腳本來啟動docker容器,但我寧願不...

如何使用Ansible的docker_container模塊顯示容器的標准?

這實際上適用於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路徑訪問結果非常重要。

不要使用Ansible來運行簡單的單元測試。 Ansible使復雜的事情簡單易行。

以下bash腳本是4行,Ansible playbook已經處於25行,由於並發問題和輸出格式問題仍未完全正常運行(我相信我會找到更多)。

對於docker的Ansible仍然太新,不易處理並發問題,缺少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

您可以使用此命令查看docker logs containerName ... docker logs containerName 要根據TRACE,INFO等級別打印日志,請嘗試supervisord。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM