通过docker部署发布python项目的实战步骤

 更新时间:2025年08月17日 08:53:13   作者:慧一居士  
将Python项目通过Docker部署发布,可以实现环境一致性、快速迁移和高效运维,本文将为大家详细介绍一下具体的实现步骤,希望对大家有所帮助

将Python项目通过Docker部署发布,可以实现环境一致性、快速迁移和高效运维。以下是实战部署的完整步骤,结合最佳实践整理而成:

一、项目准备

1.确保本地项目可运行

开发完成并本地测试通过(如 Flask/FastAPI 项目能正常访问)。

项目结构示例:

myproject/
├── app.py
├── requirements.txt
└── Dockerfile

2.生成依赖文件 requirements.txt

# 推荐使用 pipreqs(只导出项目实际依赖)
pip install pipreqs
pipreqs . --encoding=utf8 --force

# 或使用 pip freeze(可能包含多余包)
pip freeze > requirements.txt

二、编写Dockerfile

在项目根目录创建 Dockerfile,内容如下(以 Flask 为例):

# 使用轻量级Python镜像
FROM python:3.11-slim

# 设置工作目录
WORKDIR /app

# 复制依赖文件
COPY requirements.txt .

# 安装依赖(使用国内源加速)
RUN pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

# 复制项目代码
COPY . .

# 暴露应用端口(与代码中保持一致)
EXPOSE 5000

# 启动命令(推荐使用 gunicorn 生产部署)
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app"]

说明

  • 使用 slim 镜像减少体积。
  • --no-cache-dir 减少镜像大小。
  • 可替换为 uvicorn(FastAPI)或其他启动器。

三、构建 Docker 镜像

# 构建镜像,指定名称和标签
docker build -t my-python-app:v1.0 .

# 查看镜像是否生成
docker images | grep my-python-app

注意命令末尾的 . 表示上下文路径。

四、运行容器

# 启动容器,后台运行,端口映射
docker run -d -p 5000:5000 --name myapp my-python-app:v1.0

# 若需挂载配置或日志目录
# docker run -d -p 5000:5000 -v ./logs:/app/logs --name myapp my-python-app:v1.0

# 查看运行中的容器
docker ps

五、测试访问

浏览器访问:http://localhost:5000 或服务器IP地址。

查看日志:

docker logs myapp

六、优化建议(进阶)

1.使用 .dockerignore 文件

__pycache__
*.pyc
.git
.env
.idea

避免不必要的文件被打包进镜像。

2.多阶段构建(减小镜像体积)

FROM python:3.11-slim as builder
COPY requirements.txt .
RUN pip install --user -r requirements.txt

FROM python:3.11-slim
COPY --from=builder /root/.local /root/.local
COPY . .
ENV PATH=/root/.local/bin:$PATH
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app"]

3.使用 Docker Compose 管理多服务

创建 docker-compose.yml

version: '3'
services:
  web:
    build: .
    ports:
      - "5000:5000"
    depends_on:
      - db
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: example

启动:

docker compose up --build

七、常用命令速查

功能命令
查看镜像docker images
查看容器docker ps / docker ps -a
删除镜像docker rmi 镜像ID
删除容器docker rm 容器ID
查看日志docker logs 容器名
进入容器docker exec -it 容器名 /bin/bash

总结

步骤关键点
1. 准备项目本地可运行 + 生成 requirements.txt
2. 编写 Dockerfile基础镜像 + 依赖安装 + 启动命令
3. 构建镜像docker build -t name:tag .
4. 运行容器docker run -d -p host:container --name
5. 测试验证访问服务 + 查看日志

通过以上步骤,即可完成一个标准 Python 项目的 Docker 容器化部署,适用于开发、测试、生产等各类环境。

到此这篇关于通过docker部署发布python项目的实战步骤的文章就介绍到这了,更多相关docker部署发布python项目内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker 命令自动补全的实现

    Docker 命令自动补全的实现

    这篇文章主要介绍了Docker 命令自动补全的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Docker开启Docker API方式

    Docker开启Docker API方式

    文章介绍了如何在Linux系统上开启Docker API,包括修改配置文件和修改docker服务配置两种方式,同时,还提供了解决配置冲突的异常解决方案,并验证API是否开启的方法
    2025-12-12
  • docker部署rabbitmq集群的实现方法

    docker部署rabbitmq集群的实现方法

    这篇文章主要介绍了docker部署rabbitmq集群的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Docker 容器操作指令汇总详解

    Docker 容器操作指令汇总详解

    这篇文章主要介绍了Docker 容器操作指令汇总详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Docker在WSL环境下启动失败的问题解决办法

    Docker在WSL环境下启动失败的问题解决办法

    在Windows系统上,有时候我们可能会遇到Docker启动失败的问题,特别是在使用WSL(Windows Subsystem for Linux)作为Docker运行环境时,这篇文章主要介绍了Docker在WSL环境下启动失败问题的解决办法,需要的朋友可以参考下
    2025-07-07
  • Docker的理解和基本命令详解

    Docker的理解和基本命令详解

    这篇文章主要介绍了Docker的理解和基本命令详解,需要的朋友可以参考下
    2017-05-05
  • Docker部署tenine实现后端应用的高可用与负载均衡(推荐)

    Docker部署tenine实现后端应用的高可用与负载均衡(推荐)

    采用Docker部署Tengine和Keepalived,实现了一种适用于小型应用场景的高可用负载均衡解决方案,本方案需要两台Ubuntu服务器、Docker软件以及三个IP地址,适合需要简易而可靠的负载均衡和高可用性的小型应用部署,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • docker容器inspect内容NetworkSettings的使用

    docker容器inspect内容NetworkSettings的使用

    文章主要介绍了Docker容器的网络设置,包括默认bridge网络和多网络连接的配置,详细解释了顶层字段(如Bridge、SandboxID、HairpinMode等)以及Networks对象的使用方法,推荐使用Networks对象来获取容器的网络信息,因为它提供了更灵活和全面的配置选项
    2026-02-02
  • 从零搭建到生产环境配置详解Docker部署MongoDB的完整流程

    从零搭建到生产环境配置详解Docker部署MongoDB的完整流程

    在容器化技术日益普及的今天,使用 Docker 部署 MongoDB 已经成为开发和生产环境的标配方案,本文详细介绍了使用Docker部署MongoDB的全过程,希望可以带大家全面掌握 Docker 部署 MongoDB 的核心技能
    2026-05-05
  • 开源框架 Matrix-Dendrite 搭建聊天服务器的详细过程

    开源框架 Matrix-Dendrite 搭建聊天服务器的详细过程

    Matrix 是一个开源、可交互、去中心化的实时通信服务框架。使用 Matrix 可以搭建安全的通信服务器,配合支持 Matrix 的客户端可以实现个人、团队间的实时聊天交互,对Matrix Dendrite搭建聊天服务器的过程感兴趣的朋友一起看看吧
    2022-03-03

最新评论