部署 Debian-python 混合应用程序的更好方法

A better way to deploy a Debian-python hybrid application

我为 Debian linux 编写了一个小应用程序,它调用 python2.7 来执行几乎所有的功能。 python 功能包括例如远程数据库访问,因此该应用程序将依赖 python 默认情况下不在每个 linux 发行版中的模块。

该应用程序被打包在一个 dpkg 文件中,以便在许多其他机器上使用(具有相同的 linux 发行版),使用 dpkg -i MyApp01

但是 python 依赖项必须单独安装才能使应用程序运行:例如 pip install mysql-connector-python-rf

现在我想使用 Docker 将我的依赖项与应用程序一起发送,并使其在其他机器上运行,而无需像上面那样安装它们。 Docker 可以用来做这个吗?如何做?

如果不是,是否有更好的方法将 python 依赖项本地捆绑到 dpkg 文件中(假设目标机器具有类似的环境)?

容器是一个孤立的环境,因此您必须将程序所需的所有内容运送到 运行。

您的 Dockerfile 将基于 Debian,因此从

开始

FROM debian

并且会有一些

RUN apt-get update \ && apt-get install -y mysoft mydependency1 mydependency2

还有

RUN pip install xxx

并以类似

的方式结束

CMD ["python","myapp.py"]

因为您的 Python 程序肯定会做

import module1, module2

这些 Python 模块需要在 运行 指令中安装到您的 Dockerfile 中