对Docker客户端执行本地python脚本 - 没有卷

时间:2015-06-25 20:50:32

标签: python django docker

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

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

Q1如何在django容器上执行等效操作?以下没有用,但我的帮助演示了我要求的内容(bash脚本printf python脚本行与expaned args):

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

Q2如何将参数传递给传递给dockerized managed.py的script.py?再一次,对我来说不起作用的例子:

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

2 个答案:

答案 0 :(得分:0)

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

至于传递参数,您可以在图像中使用ENTRYPOINT命令,如下例所示:

ENTRYPOINT django shell /home/script.sh

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

答案 1 :(得分:0)

这是将命令行参数传递给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

我-------------------------------------------

脚本中没有IF脚本 您可以在里面复制脚本,然后使用COPY,RUN命令删除它... (原因:由于码头工人是一个孤立的环境,因此不可能从外面跑(I GUESS ..))

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

相关问题