python docker如何打印脚本的返回码以了解测试脚本是否通过或失败

时间:2019-02-16 11:18:35

标签: python docker dockerpy

基本上我有2个问题:

  1. 当我尝试使用python docker apis运行时它没有打印日志,但是使用docker run来打印日志?
  2. 如何获取我在容器中运行的脚本的返回码?

这是我尝试过的:

import docker
dockerClient = docker.from_env()
print dockerClient.containers.run(image='centos7.5', command='./pmml2luastatic')

1 个答案:

答案 0 :(得分:1)

1)根据documentation函数,运行不打印,但返回stdout和stderr

  

根据stdout和stderr参数的值,容器日志是STDOUT,STDERR还是两者都记录。
  仅当使用json文件或日志记录驱动程序时,才可以读取STDOUT和STDERR。因此,如果您不使用这些驱动程序,则将返回None对象。 See the Engine API文档以获取全部详细信息。

对于显示日志,我建议考虑在子进程中运行容器,而不是通过API运行。

import subprocess

subprocess.run("docker run --rm -i centos7.5 ./pmml2luastatic", shell=True)

2)这样,您还可以通过CompletedProcess对象捕获返回代码

import subprocess

result = subprocess.run("docker run --rm -i centos7.5 ./pmml2luastatic", shell=True)

if result.returncode != 0:
   print("Error")

我将考虑使用API​​与远程计算机进行通信。 无论如何,如果您将使用API​​来运行容器,请使用stream参数。

  

stream(布尔)–如果true和detach为false,则返回日志生成器而不是字符串。如果detach为true,则忽略。默认值:False。