├── Dockerfile └── README.md /Dockerfile: -------------------------------------------------------------------------------- 1 | # Ubuntu 14.04,Trusty Tahr(可靠的塔尔羊)发行版 2 | FROM ubuntu:trusty 3 | 4 | # 道客船长荣誉出品 5 | MAINTAINER Captain Dao 6 | 7 | # APT 自动安装 Python 相关的依赖包,如需其他依赖包在此添加 8 | RUN apt-get update && \ 9 | apt-get install -y python \ 10 | python-dev \ 11 | python-pip \ 12 | # 用完包管理器后安排打扫卫生可以显著的减少镜像大小 13 | && apt-get clean \ 14 | && apt-get autoclean \ 15 | && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 16 | 17 | 18 | # 配置默认放置 App 的目录 19 | RUN mkdir -p /app 20 | WORKDIR /app 21 | EXPOSE 80 22 | CMD ["bash"] 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 如何制作一个定制的 Python 基础 Docker 镜像 2 | 3 | > 目标:准备一个定制的 Python 基础镜像。基础镜像,通常为含最小功能的系统镜像,之后的应用镜像都以此为基础。 4 | > 5 | > 本项目代码维护在 **[DaoCloud/python-sample-base-image](https://github.com/DaoCloud/python-sample-base-image)** 项目中。 6 | > 7 | > 您可以在 GitHub 找到本项目并获取本文中所提到的所有脚本文件。 8 | 9 | #### 制作基础镜像 10 | 11 | * 选择 Ubuntu 官方的 14.04 版本为我们依赖的系统镜像。 12 | 13 | ```dockerfile 14 | FROM ubuntu:trusty 15 | ``` 16 | 17 | > 因所有官方镜像均位于境外服务器,为了确保所有示例能正常运行,可以使用与官方镜像保持同步的 DaoCloud 境内镜像: 18 | > 19 | >```dockerfile 20 | >FROM daocloud.io/ubuntu:trusty 21 | >``` 22 | 23 | * 设置镜像的维护者,相当于镜像的作者或发行方。 24 | 25 | ```dockerfile 26 | MAINTAINER Captain Dao 27 | ``` 28 | 29 | * 用 `RUN` 命令调用 apt-get 包管理器安装 Python 环境所依赖的程序包。 30 | 31 | > 安装依赖包相对比较固定,因此该动作应该尽量提前,这样做有助于提高镜像层的复用率。 32 | > 33 | > 安装完依赖后打扫卫生可以显著的减少镜像大小。 34 | 35 | ```dockerfile 36 | RUN apt-get update && \ 37 | apt-get install -y python \ 38 | python-dev \ 39 | python-pip && \ 40 | rm -rf /var/lib/apt/lists/* 41 | ``` 42 | 43 | > *以下是一个不建议的做法,原因是比上述命令多添加了一层镜像,然而并没有降低总镜像的体积。* 44 | > 45 | >```dockerfile 46 | >RUN apt-get update && \ 47 | > apt-get install -y python \ 48 | > python-dev \ 49 | > python-pip 50 | >RUN rm -rf /var/lib/apt/lists/* 51 | >``` 52 | 53 | * 用 `RUN` 命令调用 `mkdir` 来准备一个干净的放置代码的目录。 54 | 55 | ```dockerfile 56 | RUN mkdir -p /app 57 | ``` 58 | 59 | * 指定其为当前的工作目录。 60 | 61 | ```dockerfile 62 | WORKDIR /app 63 | ``` 64 | 65 | * 指定暴露的容器内端口地址,最后设置默认启动命令。 66 | 67 | ```dockerfile 68 | EXPOSE 80 69 | CMD ["bash"] 70 | ``` 71 | 72 | 至此一个 Python 的基础镜像制作完毕,您可以在本地运行 `docker build -t my-python-base .` 来构建出这个镜像并命名为 `my-python-base`。 73 | 74 | Python 家族成员众多,因此需要一个通用的基础镜像,并在此基础上根据需求进行定制。 75 | 76 | > 由于国内网络环境的特殊,在本地运行 `docker build` 的时间会很长,并且有可能失败。推荐使用 **[DaoCloud Toolbox](http://blog.daocloud.io/toolbox)** 和 DaoCloud 的云端 **[代码构建](http://help.daocloud.io/features/build-flows.html)** 功能。 77 | 78 | #### 完整 Dockerfile 79 | 80 | ```dockerfile 81 | # Ubuntu 14.04,Trusty Tahr(可靠的塔尔羊)发行版 82 | FROM daocloud.io/ubuntu:trusty 83 | 84 | # 道客船长荣誉出品 85 | MAINTAINER Captain Dao 86 | 87 | # APT 自动安装 PHP 相关的依赖包,如需其他依赖包在此添加 88 | RUN apt-get update && \ 89 | apt-get install -y python \ 90 | python-dev \ 91 | python-pip \ 92 | # 用完包管理器后安排打扫卫生可以显著的减少镜像大小 93 | && apt-get clean \ 94 | && apt-get autoclean \ 95 | && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 96 | 97 | # 配置默认放置 App 的目录 98 | RUN mkdir -p /app 99 | WORKDIR /app 100 | EXPOSE 80 101 | CMD ["bash"] 102 | ``` 103 | --------------------------------------------------------------------------------