数据API 产品矩阵 案例 关于
掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务

如何开发一个基于 Docker 的 Python 应用

前言

Python 家族成员繁多,解决五花八门的业务需求。这里将通过 Python 明星项目 IPython Notebook,使其容器化,让大家掌握基础的 Docker 使用方法。

IPython Notebook 目前已经成为用 Python 做教学、计算、科研的一个重要工具。

Docker 化应用的关键元素

  • 镜像是 Docker 应用的静态表示,是应用的交付件,镜像中包含了应用运行所需的所有依赖:包括应用代码、应用依赖库、应用运行时和操作系统。

  • Dockerfile 是一个描述文件,描述了产生 Docker 镜像的过程,详细文档可以参见官方文档 Dockerfile reference

  • 容器是镜像运行时的动态表示,如果把镜像想象为一个 Class 那么容器就是这个 Class 的一个实例。

一个应用 Docker 化的第一步就是通过 Dockerfile 产生应用镜像。

编写 Dockerfile

  • 选择 Python 2.7 版本为我们依赖的系统镜像。

  1.    FROM python:2.7

因所有官方镜像均位于境外服务器,为了确保所有示例能正常运行,可以使用与官方镜像保持同步的 DaoCloud 境内镜像: FROM daocloud.io/python:2.7。

也推荐通过 DaoCloud Toolbox 极速下载官方镜像!

  • 设置镜像的维护者,相当于镜像的作者或发行方。

  1.    MAINTAINER Captain Dao <support@daocloud.io>

  • 向镜像中添加文件并安装依赖。

  1.    RUN mkdir -p /app

  2.    WORKDIR /app

  3.    ADD requirements.txt requirements.txt

  4.    RUN pip install -r requirements.txt

  5.    COPY docker-entrypoint.sh /usr/local/bin/

ADD 与 COPY 的区别

总体来说 ADD 和 COPY 都是添加文件的操作,其中 ADD 比 COPY 功能更多, ADD 允许后面的参数为 URL,还有 ADD 添加的文件为压缩包的话,它将自动解压。

使用 RUN 命令调用 pip 包管理器安装 App 的依赖包

在编写 Dockerfile 时尽量将安装依赖的过程提前以提高镜像层的复用率。

  • 启动应用进程

  1.    EXPOSE 8888

  2.    ENTRYPOINT ["docker-entrypoint.sh"]

  3.    CMD [""]

通过 EXPOSE 指定该镜像需要公开的端口。

ENTRYPOINT 与 CMD 的区别

ENTRYPOINT 指定了该镜像启动时的入口, CMD 则指定了容器启动时的命令,当两者共用时,完整的启动命令像是 ENTRYPOINT + CMD 这样。

使用 ENTRYPOINT 的好处是在我们启动镜像就像是启动了一个可执行程序,在 CMD 上仅需要指定参数;另外在我们需要自定义 CMD 时不容易出错。

制作启动脚本(docker-entrypoint.sh)

  1.    #!/bin/bash

  2.    # Strict mode

  3.    set -euo pipefail

  4.    # Create the hash to pass to the IPython notebook, but don't export it so it doesn't appear

  5.    # as an environment variable within IPython kernels themselves

  6.    HASH=$(python -c "from IPython.lib import passwd; print(passwd('${PASSWORD:-admin}'))")

  7.    echo "========================================================================"

  8.    echo "You can now connect to this Ipython Notebook server using, for example:"

  9.    echo ""

  10.    echo "  docker run -d -p <your-port>:8888 -e password=<your-password> ipython/noetebook"

  11.    echo ""

  12.    echo "  use password: ${PASSWORD:-admin} to login"

  13.    echo ""

  14.    echo "========================================================================"

  15.    unset PASSWORD

  16.    ipython notebook --no-browser --port 8888 --ip=* --NotebookApp.password="$HASH"

一般我们会将初始化应用的过程编写成一个启动脚本,在脚本里以环境变量或命令行参数的形式获取应用初始化所必须的信息,然后配置并启动应用。

启动容器

有了 Dockerfile 以后,我们可以运行下面的命令构建 Python 应用镜像并命名为 ipython/notebook:

  • 通过指令建立镜像

  1.    docker build -t ipython/notebook .

  • 通过以下指令启动容器

  1.    docker run -d -p 8888:8888 -e PASSWORD=admin ipython/notebook

注意哦,我们将初始登录密码以环境变量的形式传入容器并告知应用。

打开游览器,访问 8888 端口,就可以看到 IPython Notebook 了。

663-640.jpg.jpg

编程派.jpg

原文来自:编程派

声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com

掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务
如何开发一个基于 Docker 的 Python 应用
发布:2017-02-28 12:00:03

前言

Python 家族成员繁多,解决五花八门的业务需求。这里将通过 Python 明星项目 IPython Notebook,使其容器化,让大家掌握基础的 Docker 使用方法。

IPython Notebook 目前已经成为用 Python 做教学、计算、科研的一个重要工具。

Docker 化应用的关键元素

  • 镜像是 Docker 应用的静态表示,是应用的交付件,镜像中包含了应用运行所需的所有依赖:包括应用代码、应用依赖库、应用运行时和操作系统。

  • Dockerfile 是一个描述文件,描述了产生 Docker 镜像的过程,详细文档可以参见官方文档 Dockerfile reference

  • 容器是镜像运行时的动态表示,如果把镜像想象为一个 Class 那么容器就是这个 Class 的一个实例。

一个应用 Docker 化的第一步就是通过 Dockerfile 产生应用镜像。

编写 Dockerfile

  • 选择 Python 2.7 版本为我们依赖的系统镜像。

  1.    FROM python:2.7

因所有官方镜像均位于境外服务器,为了确保所有示例能正常运行,可以使用与官方镜像保持同步的 DaoCloud 境内镜像: FROM daocloud.io/python:2.7。

也推荐通过 DaoCloud Toolbox 极速下载官方镜像!

  • 设置镜像的维护者,相当于镜像的作者或发行方。

  1.    MAINTAINER Captain Dao <support@daocloud.io>

  • 向镜像中添加文件并安装依赖。

  1.    RUN mkdir -p /app

  2.    WORKDIR /app

  3.    ADD requirements.txt requirements.txt

  4.    RUN pip install -r requirements.txt

  5.    COPY docker-entrypoint.sh /usr/local/bin/

ADD 与 COPY 的区别

总体来说 ADD 和 COPY 都是添加文件的操作,其中 ADD 比 COPY 功能更多, ADD 允许后面的参数为 URL,还有 ADD 添加的文件为压缩包的话,它将自动解压。

使用 RUN 命令调用 pip 包管理器安装 App 的依赖包

在编写 Dockerfile 时尽量将安装依赖的过程提前以提高镜像层的复用率。

  • 启动应用进程

  1.    EXPOSE 8888

  2.    ENTRYPOINT ["docker-entrypoint.sh"]

  3.    CMD [""]

通过 EXPOSE 指定该镜像需要公开的端口。

ENTRYPOINT 与 CMD 的区别

ENTRYPOINT 指定了该镜像启动时的入口, CMD 则指定了容器启动时的命令,当两者共用时,完整的启动命令像是 ENTRYPOINT + CMD 这样。

使用 ENTRYPOINT 的好处是在我们启动镜像就像是启动了一个可执行程序,在 CMD 上仅需要指定参数;另外在我们需要自定义 CMD 时不容易出错。

制作启动脚本(docker-entrypoint.sh)

  1.    #!/bin/bash

  2.    # Strict mode

  3.    set -euo pipefail

  4.    # Create the hash to pass to the IPython notebook, but don't export it so it doesn't appear

  5.    # as an environment variable within IPython kernels themselves

  6.    HASH=$(python -c "from IPython.lib import passwd; print(passwd('${PASSWORD:-admin}'))")

  7.    echo "========================================================================"

  8.    echo "You can now connect to this Ipython Notebook server using, for example:"

  9.    echo ""

  10.    echo "  docker run -d -p <your-port>:8888 -e password=<your-password> ipython/noetebook"

  11.    echo ""

  12.    echo "  use password: ${PASSWORD:-admin} to login"

  13.    echo ""

  14.    echo "========================================================================"

  15.    unset PASSWORD

  16.    ipython notebook --no-browser --port 8888 --ip=* --NotebookApp.password="$HASH"

一般我们会将初始化应用的过程编写成一个启动脚本,在脚本里以环境变量或命令行参数的形式获取应用初始化所必须的信息,然后配置并启动应用。

启动容器

有了 Dockerfile 以后,我们可以运行下面的命令构建 Python 应用镜像并命名为 ipython/notebook:

  • 通过指令建立镜像

  1.    docker build -t ipython/notebook .

  • 通过以下指令启动容器

  1.    docker run -d -p 8888:8888 -e PASSWORD=admin ipython/notebook

注意哦,我们将初始登录密码以环境变量的形式传入容器并告知应用。

打开游览器,访问 8888 端口,就可以看到 IPython Notebook 了。

663-640.jpg.jpg

编程派.jpg

原文来自:编程派

声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com

选择想要的接口, 看看能免费获取多少次调用 选择(单选)或填写想要的接口
  • 短信API服务
  • 银行卡四元素检测[简]
  • 身份证实名认证
  • 手机状态查询
  • 三网手机实名制认证[简]
  • 身份证OCR识别
  • 证件识别
  • 企业工商信息
短信API服务
  • 短信API服务
  • 银行卡四元素检测[简]
  • 身份证实名认证
  • 手机状态查询
  • 三网手机实名制认证[简]
  • 身份证OCR识别
  • 证件识别
  • 企业工商信息
  • 确定
选择您的身份
请选择寻找接口的目的
预计每月调用量
请选择预计每月调用量
产品研发的阶段
请选择产品研发的阶段
×

前往领取
电话 0512-88869195
×
企业用户认证,
可获得1000次免费调用
注册登录 > 企业账户认证 > 领取接口包
企业用户认证领取接口包 立即领取
× 企业用户认证,
可获得1000次免费调用,立即领取>
数 据 驱 动 未 来
Data Drives The Future