Dockerfile 构建python环境
通过Dockerfile源码编译安装Python3.6环境,包含清理系统Python、设置编码、编译安装及升级pip,构建镜像约684MB,挂载本地目录运行容器输出HelloWorld,实现纯净可复用的开发环境。
构建Python开发环境是容器化实践中的常见需求,而Dockerfile则是实现这一目标的核心工具。下面直接进入正题——如何通过Dockerfile一步步搭建一个干净的Python环境,并让代码在容器中跑起来。
Dockerfile 构建python环境
构建步骤
整个过程可以拆解为三个关键动作:编写Dockerfile、用docker build创建镜像、最后用docker run运行容器。先看一眼完整的Dockerfile长什么样,再逐一拆解每行代码的用意。

具体步骤
第一步:创建项目目录
先在宿主机上建好工作区。打开终端,执行:
master@master:~$ mkdir -p ~/python ~/python/myapp
其中~/python是总目录,myapp会映射为容器内的应用目录,方便代码直接挂载。
第二步:编写Dockerfile
进入~/python目录,创建文件Dockerfile,内容如下(每一段都有明确任务):
FROM buildpack-deps:jessie
# 移除Debian自带的Python痕迹,确保环境纯净
RUN apt-get purge -y python.*
# 解决Python3在LANG=C环境下的编码BUG
ENV LANG C.UTF-8
# 导入GPG密钥,用于验证源码包
ENV GPG_KEY 97FC712E4C024BBEA48A61ED3A5CA953F73C700D
# 指定Python版本和pip版本
ENV PYTHON_VERSION 3.6.1
ENV PYTHON_PIP_VERSION 8.1.2
# 下载、验证、编译安装Python,同时升级pip
RUN set -ex \
&& curl -fSL "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-${PYTHON_VERSION}.tar.xz" -o python.tar.xz \
&& curl -fSL "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-${PYTHON_VERSION}.tar.xz.asc" -o python.tar.xz.asc \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY" \
&& gpg --batch --verify python.tar.xz.asc python.tar.xz \
&& rm -r "$GNUPGHOME" python.tar.xz.asc \
&& mkdir -p /usr/src/python \
&& tar -xJC /usr/src/python --strip-components=1 -f python.tar.xz \
&& rm python.tar.xz \
&& cd /usr/src/python \
&& ./configure --enable-shared --enable-unicode=ucs4 \
&& make -j"$(nproc)" \
&& make install \
&& ldconfig \
&& pip3 install --no-cache-dir --upgrade --ignore-installed pip==$PYTHON_PIP_VERSION \
&& find /usr/local -depth \
\( \
\( -type d -a -name test -o -name tests \) \
-o \
\( -type f -a -name '*.pyc' -o -name '*.pyo' \) \
\) -exec rm -rf '{}' + \
&& rm -rf /usr/src/python ~/.cache
# 创建常用符号链接,让python命令指向python3
RUN cd /usr/local/bin \
&& ln -s easy_install-3.5 easy_install \
&& ln -s idle3 idle \
&& ln -s pydoc3 pydoc \
&& ln -s python3 python \
&& ln -s python3-config python-config
CMD ["python3"]
每段注释都很清楚:先清理系统自带Python,再设置正确编码,然后通过源码编译安装指定版本,最后顺手把pip升级到对应的版本,并清理测试文件来减小镜像体积。末尾的符号链接是惯例操作,确保输入python直接调用Python3。
第三步:构建镜像
在~/python目录下执行构建命令,注意替换成你自己的镜像名(这里用python:3.6为例):
master@master:~/python$ docker build -t python:3.6 .
构建完成后,查看本地镜像列表:
master@master:~/python$ docker images python:3.6
REPOSITORY TAG IMAGE ID CREATED SIZE
python 3.6 045767ddf24a 4 days ago 684.1 MB
镜像大小约684MB,包含了完整的Python 3.6运行环境。
第四步:准备测试代码
在~/python/myapp目录下创建文件helloworld.py:
#!/usr/bin/python
print("Hello, World,from zhbit ");
第五步:运行容器
使用docker run命令将本地目录挂载到容器内,并指定工作目录:
master@master:~/python$ docker run -v $PWD/myapp:/usr/src/myapp -w /usr/src/myapp python:3.6 python helloworld.py
参数解读:
-v $PWD/myapp:/usr/src/myapp:将当前宿主机下的myapp目录挂载到容器的/usr/src/myapp,实现代码动态同步。-w /usr/src/myapp:设定容器的工作目录为挂载点。python helloworld.py:在容器内执行Python脚本。
输出结果:
Hello, World,from zhbit
至此,一个完整的Dockerfile构建Python环境并运行容器的流程就走通了。这套方法适用于快速搭建任意版本的Python开发环境,也方便团队统一配置——毕竟Dockerfile本身就是最好的文档。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















