将Python项目打包成Docker镜像的全过程

作者:

文章目录
  • 在日常开发中,我们经常需要部署 Python 应用到服务器、测试环境或交付他人使用。传统方式依赖本地环境配置,一旦换机器或多人协作,很容易出现“本地运行没问题、远程报错一堆”的情况。为了解决这种“环境地狱”问题,Docker 作为容器化技术的代表,能够打包整个项目及其依赖,保证“在哪跑都一样”。这篇文章将从零开始,记录我如何将一个 Python 项目打包为 Docker 镜像的全过程,适合有基本 Python 基础但对 Docker 不熟悉的开发者参考。
  • pip freeze > requirements.txt 使用上面命令可能会打包很不需要的包,简洁一点打包方式 pip install pipreqs pipreqs . –encoding=utf8 –use-local
  • # 使用官方 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 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 项目的容器化部署思路。 以上就是将Python项目打包成Docker镜像的全过程的详细内容,更多关于Python项目打包Docker镜像的资料请关注风君子博客其它相关文章! 您可能感兴趣的文章: K8S自动化运维容器Docker集群方式 将Python Flask服务打包成Docker镜像并运行的完整指南 docker打包python镜像的全教程分享 将本地Python项目打包成docker镜像上传到服务器并在docker中运行 python flask项目打包成docker镜像发布的过程
  • 目录
    • 一、前言
    • 二、项目简介与结构
    • 三、创建requirements.txt
    • 四、编写 Dockerfile 
    • 五、构建 Docker 镜像
    • 六、运行容器并访问服务
    • 七、遇到的问题与解决
    • 八、总结

    在日常开发中,我们经常需要部署 Python 应用到服务器、测试环境或交付他人使用。传统方式依赖本地环境配置,一旦换机器或多人协作,很容易出现“本地运行没问题、远程报错一堆”的情况。为了解决这种“环境地狱”问题,Docker 作为容器化技术的代表,能够打包整个项目及其依赖,保证“在哪跑都一样”。这篇文章将从零开始,记录我如何将一个 Python 项目打包为 Docker 镜像的全过程,适合有基本 Python 基础但对 Docker 不熟悉的开发者参考。

    pip freeze > requirements.txt

    使用上面命令可能会打包很不需要的包,简洁一点打包方式

    pip install pipreqs
    pipreqs . --encoding=utf8 --use-local
    

    # 使用官方 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 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 项目的容器化部署思路。

    以上就是将Python项目打包成Docker镜像的全过程的详细内容,更多关于Python项目打包Docker镜像的资料请关注风君子博客其它相关文章!

    您可能感兴趣的文章:

    • K8S自动化运维容器Docker集群方式
    • 将Python Flask服务打包成Docker镜像并运行的完整指南
    • docker打包python镜像的全教程分享
    • 将本地Python项目打包成docker镜像上传到服务器并在docker中运行
    • python flask项目打包成docker镜像发布的过程

    站内搜索