Преобразование docker run в python docker, проблемы с передачей переменных среды
Я пытаюсь преобразовать следующую команду 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?
РЕДАКТИРОВАТЬ
После изменения на
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 ответ
Решение
Второй параметр run()
метод - это команда, а не среда. Если у вас нет команды, пройдитеNone
.
Согласно документации environment
должен быть либо словарём, либо списком, поэтому в вашем случае:
client.containers.run(DOCKER_IMAGE, None, environment=['MY_VAR=fooname'], ...
Документы: https://docker-py.readthedocs.io/en/stable/containers.html