Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在docker客户端本地执行python脚本-无卷_Python_Django_Docker - Fatal编程技术网

在docker客户端本地执行python脚本-无卷

在docker客户端本地执行python脚本-无卷,python,django,docker,Python,Django,Docker,我可以运行docker客户端本地的bash脚本(不是docker主机或目标容器的本地脚本),而无需使用卷或将脚本复制到容器: docker run debian bash -c "`cat script.sh`" Q1如何在django容器上执行等效操作?以下内容不起作用,但我的帮助演示了我的要求(带expaned参数的python脚本行的bash脚本printf): docker运行django shell

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

docker run debian bash -c "`cat script.sh`"
Q1如何在django容器上执行等效操作?以下内容不起作用,但我的帮助演示了我的要求(带expaned参数的python脚本行的bash脚本printf):

docker运行django shell<`cat script.py`
cat script.py | docker运行django shell
Q2如何将参数传递给script.py,并将其传递给dockerized managed.py?同样,不起作用的例子(对我来说):

/script.sh arg1 arg2 | docker run django shell
docker运行django shell
我认为最好的方法是使用自定义Dockerfile,它使用COPY或ADD命令将任何脚本移动到容器中

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

ENTRYPOINT django shell /home/script.sh

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

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

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

ENTRYPOINT django shell /home/script.sh

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

这是将命令行参数传递给python的链接:

例如:pythonscript.py-param1

如果该脚本在docker中已经可用,则可以使用Dockerfile(带传递参数)触发它

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

如果docker中不存在脚本 您可以在内部复制脚本,然后使用“复制、运行”命令将其删除。。。 (原因:因为docker是一个孤立的环境,所以从外部运行是不可能的(我猜…)

希望它能回答你的问题。
这是将命令行参数传递给python的链接:

例如:pythonscript.py-param1

如果该脚本在docker中已经可用,则可以使用Dockerfile(带传递参数)触发它

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

如果docker中不存在脚本 您可以在内部复制脚本,然后使用“复制、运行”命令将其删除。。。 (原因:因为docker是一个孤立的环境,所以从外部运行是不可能的(我猜…)

希望它能回答你的问题。
非常感谢您的回复,但问题是如何在没有复制或卷的情况下完成,就像bash示例一样。manage.py是入口点,但没有-c,shell不接受参数。这几乎比docker更像是一个python问题。感谢您的回答,但问题是如何在不复制或卷的情况下实现这一点,就像bash示例一样。manage.py是入口点,但没有-c,shell不接受参数。这几乎比docker更像是一个python问题。谢谢你的回答Pratik。有几件事,脚本是docker客户端的本地脚本,而不是docker主机的本地脚本。我所关注的是bash示例(docker运行debian bash-c“
cat script.sh
”),其中script.sh位于我的笔记本电脑上,在运行时未复制到docker文件中,也未通过主机卷访问。请使用Exec命令将脚本ssh到docker主机。对于传递参数,请使用Dockerfile而不是-c。谢谢您的回答。有几件事,脚本是docker客户端的本地脚本,而不是docker主机的本地脚本。我所关注的是bash示例(docker运行debian bash-c“
cat script.sh
”),其中script.sh位于我的笔记本电脑上,在运行时未复制到docker文件中,也未通过主机卷访问。请使用Exec命令将脚本ssh到docker主机。对于传递参数,请使用Dockerfile而不是-c。
ENTRYPOINT django shell /home/script.sh
RUN /script.py -param1 <value>
Dockerwrapper.sh

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

 RUN python script.py -param1 $1