PythonDocker高级项目部署教程_多容器管理与CI/CD流水线

千婷酱_5940

千婷酱_5940

2026-01-01

384人浏览

原创

Docker Compose 用于管理多容器协同应用,通过 docker-compose.yml 定义服务配置与依赖;推荐多阶段构建分层 Python 镜像以减小体积、提升 CI 效率;GitHub Actions 实现测试、构建、部署流水线;生产环境须做好日志集中、资源限制、配置外置和监控。

pythondocker高级项目部署教程_多容器管理与ci/cd流水线

用 Docker Compose 管理多容器应用

单个容器跑不起来完整项目,Web 服务、数据库、缓存、消息队列往往需要协同工作。Docker Compose 就是为此设计的——它用一个 docker-compose.yml 文件描述多个容器的配置、依赖关系和启动顺序。

比如一个 Flask + PostgreSQL + Redis 的典型组合,docker-compose.yml 可以这样写:

  • 定义 web 服务:基于自建镜像或 Dockerfile 构建,暴露端口,链接数据库和缓存
  • 定义 db 服务:使用官方 postgres:15 镜像,挂载数据卷确保持久化
  • 定义 cache 服务:使用 redis:7-alpine,设置内存限制和密码
  • 通过 depends_on 控制启动顺序(注意:它不等待服务就绪,需在应用层加健康检查或重试逻辑)

运行 docker-compose up -d 即可一键拉起整套环境;docker-compose logs -f 实时查看各服务日志,排查问题更直观。

构建可复用、分层的 Python 镜像

别再用 python:3.11-slim 直接 pip install 所有依赖——镜像体积大、缓存失效频繁、安全风险高。推荐多阶段构建 + requirements 分层:

  • 第一阶段:builder 使用 python:3.11-slim 安装编译型依赖(如 psycopg2-binary、cryptography),并把 requirements.txt 拆成 base.txt(运行时必需)和 dev.txt(仅开发/CI 使用)
  • 第二阶段:final 使用更小的 python:3.11-slim-bookworm 基础镜像,只复制上一阶段编译好的包和源码,删掉构建工具和缓存
  • 设好非 root 用户(user: 1001:1001)、工作目录(WORKDIR /app)、环境变量(ENV PYTHONDONTWRITEBYTECODE=1)

这样构建出的镜像通常比传统方式小 40%~60%,且每次 pip install 只在依赖变更时重建对应层,CI 构建速度明显提升。

Python Dependency Candidate Fetcher 2
Python Dependency Candidate Fetcher 2

根据包的能力以及 Jupyter 环境中的导入语句,从候选列表中挑选最适合用户表格工作流的 Python 包。

下载

用 GitHub Actions 实现 Python 项目的 CI/CD 流水线

GitHub Actions 是轻量又可靠的 CI/CD 方案,适合中小型 Python 项目。一个典型的流水线包含三个阶段:

  • 测试阶段:在 Ubuntu runner 上安装 Python 3.11,用 pip install -e ".[test]" 安装带测试依赖的包,运行 pytest --cov 并上传覆盖率报告到 Codecov 或 GitHub Code Scanning
  • 构建阶段:用 docker buildx 构建多平台镜像(如 linux/amd64 和 linux/arm64),打上 main、v1.2.0 和 latest 标签,推送到 GitHub Container Registry(GHCR)或私有 Harbor
  • 部署阶段:仅当推送 tag(如 v*)时触发,SSH 登录生产服务器,拉取新镜像,执行 docker-compose pull && docker-compose up -d,再调用健康检查接口确认服务就绪

关键细节:所有敏感信息(如 SSH 私钥、registry token)都存在 GitHub Secrets 中;用 if: startsWith(github.ref, 'refs/tags/') 精确控制部署时机;避免在 CI 中直接操作生产数据库。

生产环境必须做的几件事

容器不是“扔进去就完事”的黑盒。上线前务必确认以下事项:

  • 日志集中管理:禁用 json-file 默认驱动,改用 fluentd 或 syslog,把所有容器日志发到 ELK 或 Loki;Python 应用里用 logging.handlers.SysLogHandler 直连
  • 资源限制与健康检查:在 docker-compose.yml 中为每个服务设置 mem_limit、cpus,并添加 healthcheck(如 curl -f http://localhost:8000/healthz),让 Docker 自动重启异常容器
  • 配置外置化:所有敏感配置(DB URL、API Key)通过环境变量注入,用 pydantic-settings 统一加载和校验;避免硬编码或打包进镜像
  • 监控基础指标:用 cadvisor + prometheus 采集容器 CPU、内存、网络;Python 应用内嵌 prometheus-client 暴露业务指标(如请求延迟、错误率)

这些不是锦上添花,而是保障服务稳定、可排查、可伸缩的底线要求。

Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
flask框架如何搭建
flask框架如何搭建

搭建步骤:1、安装Python和Pip;2、创建虚拟环境;3、安装Flask;4、创建Flask应用;5、运行应用;6、访问应用。想了解更多flask框架的相关内容,可以阅读本专题下面的文章。

2024.06.27

4055

8

Python Flask框架
Python Flask框架

本专题专注于 Python 轻量级 Web 框架 Flask 的学习与实战,内容涵盖路由与视图、模板渲染、表单处理、数据库集成、用户认证以及RESTful API 开发。通过博客系统、任务管理工具与微服务接口等项目实战,帮助学员掌握 Flask 在快速构建小型到中型 Web 应用中的核心技能。

2025.08.25

6244

10

Python Flask Web框架与API开发
Python Flask Web框架与API开发

本专题系统介绍 Python Flask Web框架的基础与进阶应用,包括Flask路由、请求与响应、模板渲染、表单处理、安全性加固、数据库集成(SQLAlchemy)、以及使用Flask构建 RESTful API 服务。通过多个实战项目,帮助学习者掌握使用 Flask 开发高效、可扩展的 Web 应用与 API。

2025.12.15

316

16

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2023.08.07

2235

5

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.23

3582

1

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

2023.10.13

1196

3

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

2025.09.10

4119

7

pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

2023.10.09

3350

5

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

2024.12.20

7603

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习