从零开始:将 Python 项目打包成 Docker 镜像_python docker镜像
目录
📌 一、前言
📌 二、项目简介与结构
📌 三、创建requirements.txt
📌 四、编写 Dockerfile
📌 五、构建 Docker 镜像
📌 六、运行容器并访问服务
📌 七、遇到的问题与解决
📌 八、总结
📌 一、前言
在日常开发中,我们经常需要部署 Python 应用到服务器、测试环境或交付他人使用。传统方式依赖本地环境配置,一旦换机器或多人协作,很容易出现“本地运行没问题、远程报错一堆”的情况。为了解决这种“环境地狱”问题,Docker 作为容器化技术的代表,能够打包整个项目及其依赖,保证“在哪跑都一样”。这篇文章将从零开始,记录我如何将一个 Python 项目打包为 Docker 镜像的全过程,适合有基本 Python 基础但对 Docker 不熟悉的开发者参考。
📌 二、项目简介与结构
📌 三、创建requirements.txt
pip freeze > requirements.txt
使用上面命令可能会打包很不需要的包,简洁一点打包方式
pip install pipreqspipreqs . --encoding=utf8 --use-local
📌 四、编写 Dockerfile
# 使用官方 Python 基础镜像FROM python:3.10-slim# 设置工作目录WORKDIR /app# 复制依赖文件并安装COPY requirements.txt .RUN pip install -r requirements.txt# 安装依赖(官方源速度较慢,使用阿里源)RUN pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/# 复制项目代码COPY . .# 启动程序CMD [\"python\", \"app.py\"]
当前我的项目的Dockerfile是这样的
# 使用官方的 Python 3.9 slim 镜像FROM python:3.9-slim# 设置工作目录WORKDIR /app# 将当前目录的内容复制到容器中COPY asr_http_server.py /app/COPY trans_utils.py /app/COPY requirements.txt /app/# 更新包管理器并安装必要的系统依赖RUN apt-get update && apt-get install -y \\ ffmpeg \\ libsndfile1 \\ build-essential \\ curl \\ ca-certificates \\ && rm -rf /var/lib/apt/lists/*# 安装 Python 依赖RUN pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/# 暴露 Flask 服务的端口EXPOSE 7869# 设置启动命令CMD [\"python\", \"asr_http_server.py\"]
📌 五、构建 Docker 镜像
docker build -t my-python-app .
构建过程截图
📌 六、运行容器并访问服务
docker run -d -p 5000:5000 my-python-app
若 app.py 使用 Flask,可在 127.0.0.1:5000 访问服务。
📌 七、遇到的问题与解决
这里记录在构建过程中遇到的坑,比如:
-
pip 安装失败(网络问题 / 缺少 build 工具)
-
镜像太大(优化建议:alpine / 多阶段构建)
-
时区问题
-
文件没复制进去 / 编码问题
📌 八、总结
本文从零开始,介绍了如何将 Python 项目打包成 Docker 镜像,并记录了构建过程中的关键步骤与注意事项。希望能帮助你快速掌握 Python 项目的容器化部署思路。