докер Python, как напечатать код возврата скрипта, чтобы узнать, пройден ли тестовый скрипт или нет - PullRequest
0 голосов
/ 16 февраля 2019

В основном у меня есть 2 проблемы:

  1. Это не печатает журналы, когда я пытаюсь запустить с помощью Python Docker API, но он печатает с помощью Docker Run?
  2. Как получитькод возврата скрипта, который я запускаю внутри контейнера?

Вот что я пробовал:

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

1 Ответ

0 голосов
/ 16 февраля 2019

1) В соответствии с документацией функция запуска не печатает, но возвращает stdout и stderr

Контейнер регистрирует либо STDOUT, STDERR, либо оба, в зависимости от значенияаргументов stdout и stderr.STDOUT и STDERR могут быть прочитаны только в том случае, если использовался драйвер регистрации json-файла или journald.Таким образом, если вы не используете ни один из этих драйверов, вместо этого возвращается объект None. Подробную информацию см. В документации Engine Engine .

Для show log я предлагаю рассмотреть запуск контейнера в подпроцессе вместо запуска через 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 param.

stream (bool) - если true и detach равно false, вместо строки верните генератор журнала.Игнорируется, если отсоединение верно.По умолчанию: False.

...