Преобразование docker прогона в python docker, проблемы передачи переменных среды - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь преобразовать следующую команду docker run в python docker run:

docker run -v ${HOME}/mypath/somepath:/root/mypath/somepath:ro -v /tmp/report/:/root/report -e MY_VAR=fooname DOCKER_IMAGE

, и это то, что у меня есть:

client = docker.from_env()
client.containers.run(DOCKER_IMAGE, 'MY_VAR=fooname', volumes={
    f'{home}/mypath/somepath': {'bind': '/root/mypath/somepath', 'mode': 'ro'},
    '/tmp/report': {'bind': '/root/report', 'mode': 'rw'},
},)

Но, похоже, у меня возникают проблемы при передаче переменных env

docker.errors.APIError: 500 Server Error: Internal Server Error ("OCI runtime create failed: container_linux.go:346: starting container process caused "exec: \"MY_VAR=fooname\": executable file not found in $PATH": unknown")

Как правильно передать переменные env?

EDIT

После изменив его на

client.containers.run(DOCKER_IMAGE, None, environment=['MY_VAR=fooname'], volumes={
    f'{home}/mypath/somepath': {'bind': '/root/mypath/somepath', 'mode': 'ro'},
    '/tmp/report': {'bind': '/root/report', 'mode': 'rw'},
},)

Вместо этого я получаю эту ошибку: docker.errors.ContainerError: Command 'None' in image

В файле сборки docker объявлена ​​команда для запуска сценария python.

1 Ответ

0 голосов
/ 28 февраля 2020

Вторым параметром метода run() является команда, а не среда. Если у вас нет команды, тогда передайте None.

В соответствии с документацией environment должен быть либо диктатом, либо списком, поэтому в вашем случае:

client.containers.run(DOCKER_IMAGE, None, environment=['MY_VAR=fooname'], ...

Документы: https://docker-py.readthedocs.io/en/stable/containers.html#docker .models.containers.ContainerCollection.run

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...