核心是选对基础镜像、理清文件复制顺序、正确安装依赖并明确启动方式;使用python:3.11-slim等官方镜像,先COPY requirements.txt再RUN pip install,最后COPY代码,以CMD["python","app.py"]启动。

直接用 Dockerfile 搭建 Python 运行环境,核心是选对基础镜像、理清文件复制顺序、正确安装依赖,并明确启动方式。不需要额外装 Python,官方镜像已预装好解释器。
选一个合适的 Python 基础镜像
优先使用 python:<version>-slim(如 python:3.11-slim),它体积小、攻击面少,适合生产;开发调试可选 python:3.11(含 pip、dev 工具等)。避免用 buildpack-deps 或从源码编译,除非有特殊系统库需求。
-
slim镜像基于 Debian,不含 gcc、curl 等构建工具,但足够运行大多数纯 Python 应用 - 若需编译扩展(如某些 C 扩展包),加一句
RUN apt-get update && apt-get install -y build-essential - 国内用户建议在
RUN pip install前加清华源:RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
组织项目结构与编写 Dockerfile
确保项目根目录下有 requirements.txt 和主程序(如 app.py),然后创建 Dockerfile:
-
FROM python:3.11-slim—— 拉取基础环境 -
WORKDIR /app—— 设定工作路径,所有后续操作在此目录进行 -
COPY requirements.txt .—— 先只复制依赖文件,利于利用 Docker 构建缓存 -
RUN pip install --no-cache-dir -r requirements.txt—— 安装依赖,--no-cache-dir减小镜像体积 -
COPY . .—— 再复制全部代码(此时 pip 已装好,不会重复触发安装) -
EXPOSE 5000—— 声明应用监听端口(仅说明用途,不自动映射) -
CMD ["python", "app.py"]—— 容器启动时执行的默认命令
构建并验证镜像
在项目目录下执行命令构建镜像:
立即学习“Python免费学习笔记(深入)”;
-
docker build -t my-python-env .——-t指定镜像名,.表示当前目录(Dockerfile 所在位置) -
docker run --rm my-python-env python --version—— 快速验证 Python 版本是否符合预期 -
docker run --rm -v $(pwd):/app my-python-env pip list—— 挂载本地代码目录,查看已安装包列表
如果应用是 Web 服务(如 Flask),可加 -p 5000:5000 启动后访问 http://localhost:5000 测试连通性。
进阶建议:减小体积与提升安全性
基础环境跑通后,可进一步优化:
- 用多阶段构建:第一阶段装依赖和构建工具,第二阶段只复制
/usr/local/lib/python*/site-packages和代码,彻底剔除编译器 - 非 root 用户运行:添加
RUN groupadd -g 1001 -f appuser && useradd -s /bin/bash -u 1001 -m appuser和USER appuser - 设及时区:加
RUN apt-get update && apt-get install -y tzdata && rm -rf /var/lib/apt/lists/*和ENV TZ=Asia/Shanghai - 避免 COPY 整个目录:改用
.dockerignore排除__pycache__、.git、venv等无关文件


















