如何为自定义的Python项目编写Dockerfile?

3

我对Docker还不太熟悉,我需要创建容器来运行Docker容器作为Apache Mesos任务。

问题是我找不到任何相关的例子。它们都集中在Web开发上,而这不是我的情况。

我有一个纯Python项目,有很多依赖项(如Berkeley Caffe或OpenCV)。 如何编写Docker文件以正确地注册所有依赖项(以及如何找到它们?)


您可以阅读此文档 https://docs.docker.com/engine/articles/dockerfile_best-practices/ 并跟随链接。 - name_no
2个回答

5
Docker Hub注册表包含许多官方语言镜像,您可以将其用作基础镜像。 说明文告诉你如何构建Python项目,包括导入依赖项。
├── Dockerfile                <-- Docker build file
├── requirements.txt          <-- List of pip dependencies
└── your-daemon-or-script.py  <-- Python script to run

Image支持Python 2和3,您可以在Dockerfile中指定:

FROM python:3-onbuild
CMD [ "python", "./your-daemon-or-script.py" ]

基础镜像使用特殊的 ONBUILD指令来为您完成所有艰苦的工作。

谢谢,马克!我已经理解了构建Docker镜像的基本部分。所以,实际上将我的Python项目打包到Docker镜像中的最佳方法是制作一个Python .egg并将其上传到PIP仓库?另一个(粗糙的)选择是制作.tgz文件,将其上传到某个地方,然后只需添加RUN wget 'http://somewhere/my_package.tgz',对吗? - Vast Academician
打包软件可以简化部署流程,因此上传到Python仓库不会有坏处。话虽如此,Python Docker镜像会将本地目录复制到容器内的"/usr/src/app"位置,这可能已经足够了。 - Mark O'Connor

0

官方的Docker网站提供了一些逐步参考文档。

然而,为了让你开始:想一想如果你要在一个全新的机器上安装和启动你的项目,你会做什么。你可能会像这样做...

apt-get update
apt-get install -y python python-opencv wget ...
# copy your app into /myapp/
python /myapp/myscript.py

这基本上是一对一映射

FROM ubuntu:14.04
MAINTAINER Vast Academician <vast@example.com>
RUN apt-get update && apt-get install -y python python-opencv wget ...
COPY /path/on/host/to/myapp /myapp
CMD ["python", "/myapp/myscript.py"]

当然,以上代码未经测试,但你可能已经有了大致的想法。


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