【问题标题】:How to run container and execute python on docker in one command?如何在一个命令中运行容器并在 docker 上执行 python?
【发布时间】:2021-03-23 15:38:01
【问题描述】:

我们有一个非常小的 Python 代码,需要在容器上运行。以下两个命令工作正常, 我想将它们合并为一个?最终目标是容器应该启动(基于图像),运行python并自行退出。

docker run --name mycontainer -v /opt/testuser/pythoncode/:/usr/src/app/ -t -d pythonimage:latest
docker exec -it mycontainer python3 /usr/src/app/subfolder/createfile.py

我试过 -c "/bin/bash python3 /usr/src/app/subfolder/createfile.py" 这没用,只是。

【问题讨论】:

  • 你可以使用CMD将它添加到docker文件中
  • docker run 采用可选的 COMMAND 参数来运行,而不是 Dockerfile 中指定的 CMD。这会做你想要的吗? docker run --name mycontainer -v /opt/testuser/pythoncode/:/usr/src/app/ -t -d pythonimage:latest python3 /usr/src/app/subfolder/createfile.py
  • @DHudson 路径“/usr/src/app/subfolder/createfile.py”将是动态的,这意味着每次我在容器上运行 python 时,我都会提供不同的路径。
  • @deadshot 该 CMD 如何在 docker 文件中工作,它可以接受动态输入
  • 使用环境变量

标签: python docker containers


【解决方案1】:

你可以添加一个名为Dockerfile的文件(文件名前后没有点,就是这个),内容如下:

from ubuntu:20.04
env run=/usr/src/app/subfolder/createfile.py
cmd ["/bin/bash", "-c", "${run}"]

然后运行:

docker build YOUR_IMAGE_NAME # this should be a new name, like pythonimage2

现在运行它:

docker run --name mycontainer -v /opt/testuser/pythoncode/:/usr/src/app/ -t -d pythonimage2:latest

所以,现在让容器运行的 docker 执行命令现在是 /usr/src/app/subfolder/createfile.py

关于您的答案,您可以添加一个变量,每次只需修改该行。

你也可以对你的Dockerfile这样做:

from ubuntu:20.04
env path=/usr/src/app/subfolder/
env file=$path/createfile.py
cmd ["/bin/bash", "-c", "${file}"]

现在你只需要修改file 变量。如果您的任何子目录发生更改,您可以将其从 path 变量中删除并将其添加到 file 变量中。

【讨论】:

  • 我最初做了同样的事情,问题是硬编码的代码文件“ CMD ["python3", "/usr/src/app/subfolder/createfile.py"] 在我的情况下这个路径和 python文件每次都会改变。
  • 你的意思是每次路径都会改变吗?还是你文件的内容?
  • 每次启动容器时路径都会改变。这个参数“/usr/src/app/subfolder/createfile.py”需要动态设置。
  • 好的,那么写一个变量好不好?我已经编辑了我的答案以添加一个变量。再次检查,如果它解决了您的问题,请告诉我。
猜你喜欢
  • 1970-01-01
  • 2018-10-08
  • 1970-01-01
  • 2021-07-10
  • 2020-08-12
  • 1970-01-01
  • 1970-01-01
  • 2020-05-21
  • 1970-01-01
相关资源
最近更新 更多