如何在另一个Python脚本中执行本地Python脚本并将其放入Docker容器中?

8

让我澄清一下我想做什么。

我有一个在本地机器上运行的Python脚本,它执行了很多工作,在某个时刻需要调用另一个必须在Docker容器中执行的Python脚本。这个脚本有一些输入参数,并返回一些结果。

因此,我想找出如何实现这一点。

例如:

def function()
    do stuff
         .
         .
         .
    do more stuff

    ''' call another local script that must be executed into a docker'''

    result = execute_python_script_into_a_docker(python script arguments)

在终端中以以下命令启动了 Docker:

docker run -it -p 8888:8888 my_docker
3个回答

20

您可以通过-v选项将文件添加到Docker容器中。

docker run -it -v myFile.py:/myFile.py -p 8888:8888 my_docker
< p > 使用以下命令在 docker 中执行您的 Python 代码: py /myFile.py

或者使用主机执行:

docker run -it -v myFile.py:/myFile.py -p 8888:8888 my_docker py /myFile.py

即使您的Docker已经在运行

docker exec -ti docker_name py /myFile.py
docker_name 在运行 docker ps 命令后可用。或者您可以在运行命令中指定名称,例如:
docker run -it --name docker_name -v myFile.py:/myFile.py -p 8888:8888 my_docker

就像这样:

-v absoluteHostPath:absoluteRemotePath

你也可以以同样的方式指定文件夹:

-v myFolder:/customPath/myFolder

更多详细信息请参阅Docker文档


1
是的,我知道我可以这样做,但问题在于如何从另一个本地Python脚本中实现它,我无法弄清楚如何做到这一点。我的意思是,script_1必须在本地机器上运行,然后在例程的某个特定点上,它必须调用docker中的另一个脚本(script_2)。 - Abiud Rds
1
你必须从 shell 中执行。尝试使用 Python 在 shell 中启动命令:https://dev59.com/SnVD5IYBdhLWcg3wGXlI - callmemath

3
您可以使用Docker的Python SDK库。首先,您需要将脚本移动到那里,我建议您在创建容器或像Callmemath提到的那样启动容器时执行此操作。
docker run -it -v myFile.py:/myFile.py -p 8888:8888 my_docker

然后使用库来运行脚本:

...
client = docker.client.from_env()
container = client.containers.get(CONTAINER_ID)
exit_code, output = container.exec_run("python your_script.py script_args")
... 

1

您需要使用docker exec -it image_name python /filename

注:要使用“docker exec”,必须使用docker run运行容器


我们如何保持它的运行? - Nikhil VJ
@NikhilVJ 当你从终端运行Docker时,你可以添加-d标志来将Docker的执行与终端分离,然后你可以使用同一个终端来执行docker exec命令...或者使用另一个终端。 - Abiud Rds

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接