对docker客户端执行本地的python脚本 – 没有卷

我可以运行一个bash脚本本地到我的docker客户端(不是本地的docker主机或目标容器),而不使用卷或将脚本复制到容器:

docker run debian bash -c "`cat script.sh`" 

Q1我如何在django容器上做同样的事情? 以下没有工作,但我的帮助展示我要求什么(bash脚本printf python脚本行与展开的参数):

 docker run django shell < `cat script.py` cat script.py | docker run django shell 

Q2如何将parameter passing给dockerized managed.py的script.py? 再次,什么不工作的例子(对我来说):

 ./script.sh arg1 arg2 | docker run django shell docker run django shell < echo "$(./script.sh arg1 arg2)" 

我认为最好的办法是使用使用COPY或ADD命令的自定义Dockerfile将任何脚本移动到容器中。

至于传递参数,你可以在你的图像中使用ENTRYPOINT命令,如下面的例子:

 ENTRYPOINT django shell /home/script.sh 

然后你可以使用docker run arg1 arg2来传递参数

这是将命令行parameter passing给python的链接: http : //www.tutorialspoint.com/python/python_command_line_arguments.htm

例如:python script.py -param1

如果脚本已经在Docker中可用,您可以使用Dockerfile来触发它(使用传递参数)

 RUN /script.py -param1 <value> 

额外:话虽如此,如果有更多的参数需要频繁更改,那么改变Dockerfile总是很困难。因此,一个小的shell脚本可以写成Dockerfile的包装器,如下所示:

 Dockerwrapper.sh pass parameters to Dockerfile dockerbuild --tag <name> . 

 Dockerfile RUN python script.py -param1 $1 

一世 – – – – – – – – – – – – – – – – – – – – – –

如果脚本没有在docker里面,你可以拷贝脚本,然后使用COPY,RUN命令删除它(原因:因为docker是一个孤立的环境,所以不能从外部运行(I GUESS ..))

希望它回答你的问题。 祝一切顺利