【问题标题】:How to write a Dockerfile for a custom python project?如何为自定义 python 项目编写 Dockerfile?
【发布时间】:2015-12-20 13:16:11
【问题描述】:

我是 Docker 的新手,我需要创建容器以将 Docker 容器作为 Apache Mesos 任务运行。

问题是我找不到任何相关的例子。它们都以 Web 开发为中心,而我的情况并非如此。

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

【问题讨论】:

标签: python docker mesos


【解决方案1】:

docker hub 注册表包含许多官方语言镜像,您可以将它们用作基础镜像。

这些说明告诉您如何构建您的 python 项目,包括依赖项的导入。

├── Dockerfile                <-- Docker build file
├── requirements.txt          <-- List of pip dependencies
└── your-daemon-or-script.py  <-- Python script to run

图像同时支持 Python 2 和 3,您可以在 Dockerfile 中指定:

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

基础镜像使用特殊的ONBUILD instructions为你所有的辛勤工作。

【讨论】:

  • 谢谢,马克!我已经了解了构建 Docker 映像的基本部分。那么,实际上将我的 Python 项目打包到 Docker 映像中的最佳方法是制作一个 Python .egg 并将其上传到 PIP 存储库?另一个(粗略的)选项可能是制作 .tgz,将其上传到某个地方,然后添加 RUN wget 'somewhere/my_package.tgz',对吗?
  • 打包你的软件总是让部署更简单,所以上传到 python 存储库并不是一件坏事。话虽如此,python docker 映像会将本地目录复制到容器内的“/usr/src/app”中,这样​​可能就足够了。
【解决方案2】:

Docker 官方网站有一些 step-by-stepreference 文档。

但是,为了让您开始:考虑一下如果您要在新机器上安装和启动您的项目会做什么,这可能会有所帮助。你可能会做这样的事情......

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"]

当然,以上内容未经测试,但您可能明白了。

【讨论】:

    猜你喜欢
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 2016-08-19
    • 2012-03-07
    相关资源
    最近更新 更多