转换 docker 运行 python docker,传递环境变量的问题
Converting docker run to python docker, issues passing environmental variables
我正在尝试将以下 docker 运行 命令转换为 python docker 运行:
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")
传递环境变量的正确方法是什么?
编辑
改成
后
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 脚本。
run()
方法的第二个参数是命令,不是环境。如果您没有命令,则传递 None
.
根据文档,environment
必须是字典或列表,因此在您的情况下:
client.containers.run(DOCKER_IMAGE, None, environment=['MY_VAR=fooname'], ...
我正在尝试将以下 docker 运行 命令转换为 python docker 运行:
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")
传递环境变量的正确方法是什么?
编辑
改成
后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 脚本。
run()
方法的第二个参数是命令,不是环境。如果您没有命令,则传递 None
.
根据文档,environment
必须是字典或列表,因此在您的情况下:
client.containers.run(DOCKER_IMAGE, None, environment=['MY_VAR=fooname'], ...