首页 > 解决方案 > Docker:从同一个镜像运行多个脚本(容器)

问题描述

我制作了一个 Python 项目,其中包含几个包和几个依赖于包的脚本。结构看起来像这样:

app/
  package1/
    __init__.py
    ...
  package2/
    __init__.py
    ...
  script1.py
  script2.py

所以我对应用程序进行了 docker 化,也就是说,我用一些 Dockerfile 制作了一个图像,其中默认脚本是 script1.py:

FROM ...
ADD ...
...
CMD python script1.py

我的问题:从这个单一图像启动两个不同的容器是一个好习惯,一个运行 scrip1,另一个运行 script2?

docker build -t my_image .
docker run -d -it my_image
docker run -d -it my_image python script2.py

请注意,在我的例子中,script1 和 script2 是相互独立的(它们不通信并且可以独立启动)。

谢谢你的帮助

标签: pythondocker

解决方案


Docker文档将“每个容器应该只关注一个问题”列为最佳实践。在您的示例中,这听起来好像您实际上有两个任务由两个单独的 Python 脚本运行,但打包在同一个图像中。

理想情况下,您会避免这种情况,并为您的两个任务提供两个单独的图像。如果这两个脚本共享大量公共依赖项,您可以创建自己的父映像以作为两个脚本映像的基础。


推荐阅读