在Python中将CMD行参数传递给Docker入口点

时间:2018-09-27 12:35:27

标签: python-2.7 docker

所以我有一个像这样的docker文件:

FROM frolvlad/alpine-python2
MAINTAINER *REDACTED*
COPY . .
RUN pip install -r requirements.txt
RUN python misc_scripts/gen_hosts.py
RUN python misc_scripts/strip_delims.py
RUN python runparse.py -spc -spi
ENTRYPOINT ["python", "rebuild.py"]

并在python中使用Docker API,我试图像这样运行容器

logs = client.containers.run(image_id, name=str(_uuid), entrypoint=['-m ME3400', '-mi NONE'])

但是我遇到以下错误

500 Server Error: Internal Server Error ("OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"-m ME3400\": executable file not found in $PATH": unknown")

我认为我做错了,有人知道为什么/为什么不起作用?

1 个答案:

答案 0 :(得分:1)

正如您在问题标题中所说的,它应该是您期望的command参数。遵循source code on github(从第484行开始),它应该更具体。

按如下所示更改代码:

logs = client.containers.run(image_id, name=str(_uuid), command=['-m ME3400', '-mi NONE'])

始终请注意,如果CMD存在,它将被视为ENTRYPOINT的args。但是,如果您指定另一个ENTRYPOINT(在您的情况下为['-m ME3400','-mi NONE']),则原始ENTRYPOINT([“ python”,“ rebuild.py”])将被覆盖。