侧边栏壁纸
博主头像
ZOUXS的空间博主等级

人生苦短,我学python

  • 累计撰写 23 篇文章
  • 累计创建 24 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Docker & Nginx 部署知识点

zouxs
2026-05-22 / 0 评论 / 0 点赞 / 3 阅读 / 6010 字
温馨提示:
本文最后更新于 2026-05-22,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

目录

  1. Docker 核心概念
  2. Dockerfile 编写与多阶段构建
  3. Docker Compose 容器编排
  4. Nginx 核心作用
  5. 高可用部署方案
  6. 面试高频扩展知识点

1. Docker 核心概念

1.1 镜像(Image)

  • 只读模板,包含代码、依赖、环境、配置
  • 分层存储,复用性强,体积小
  • 来自:Dockerfile 构建、官方仓库、私有仓库

1.2 容器(Container)

  • 镜像运行的实例,独立隔离环境
  • 一个镜像可启动 N 个容器
  • 容器 = 应用 + 独立进程空间 + 独立网络

1.3 数据卷(Volume)

  • 解决容器重启数据丢失问题
  • 宿主机与容器共享目录
  • 用于:MySQL 数据、上传文件、日志、配置文件

1.4 网络(Network)

  • 容器间互相通信的虚拟网络
  • 常用:bridge 模式
  • 容器名直接作为域名访问(如:redis:6379)

1.5 面试必背

Docker 核心价值:环境统一、一次构建处处运行、隔离性强、部署极快


2. Dockerfile 编写与多阶段构建

2.1 Dockerfile 规范

  • FROM:基础镜像(python:3.9-slim 最常用)
  • WORKDIR:工作目录
  • COPY / ADD:复制代码
  • RUN:安装依赖
  • ENV:环境变量
  • EXPOSE:暴露端口
  • CMD / ENTRYPOINT:启动命令

2.2 最佳实践

  • 选用 slim / alpine 轻量镜像
  • 合并 RUN 指令减少层数
  • .dockerignore 忽略无用文件
  • 不要运行 root 权限
  • 日志输出到 stdout

2.3 多阶段构建(重点)

  • 第一阶段:安装依赖、打包、编译
  • 第二阶段:只复制运行必需文件
  • 优点:最终镜像体积缩小 80%、安全、无冗余
  • 适用于:Python、Java、Go、前端项目

3. Docker Compose 容器编排

3.1 作用

用一个 yaml 文件一键启动、停止、重启整个项目栈,无需手动启动多个容器。

3.2 标准项目编排(Python 全栈)

  • Python 后端(Django/FastAPI)
  • MySQL 数据库
  • Redis 缓存/消息队列
  • Nginx 代理
  • Celery Worker
  • Celery Beat

3.3 核心优势

  • 开发/测试/生产环境完全一致
  • 一键部署,无环境差异
  • 一键扩容、日志聚合
  • 适合中小项目、单体项目、微服务启动

3.4 常用命令

  • docker-compose up -d 后台启动
  • docker-compose down 停止并删除
  • docker-compose logs 查看日志
  • docker-compose restart 重启服务

4. Nginx 核心作用

4.1 反向代理

  • 接收用户请求 → 转发给后端容器
  • 隐藏后端真实地址,提高安全
  • 示例:/api/* → 转发到 Python 后端

4.2 负载均衡

  • 多个后端实例分摊流量
  • 策略:轮询、IP 哈希、权重
  • 提高并发能力与可用性

4.3 HTTPS/SSL 证书部署

  • 配置 ssl_certificate
  • 强制 HTTP 跳转到 HTTPS
  • 支持 TLS1.2/1.3,提高安全与 SEO

4.4 静态资源服务

  • Vue 打包后的 dist 目录
  • 图片、JS、CSS
  • 高并发、高缓存、不占用后端资源

4.5 限流、缓存、跨域

  • 限流:limit_req 防刷接口
  • 缓存:expires 缓存静态资源
  • 跨域:add_header Access-Control-*
  • gzip 压缩

5. 高可用部署

5.1 自启动与健康检查

  • restart: always 容器崩溃自动重启
  • healthcheck 健康检查
  • 不健康自动重建,保证服务可用

5.2 日志切割

  • 容器日志会无限增大
  • 使用 logrotate 切割
  • 配置大小、天数、压缩、删除

5.3 数据备份与恢复

  • MySQL 定时备份
  • Redis 持久化备份
  • 重要文件异地备份
  • 可快速恢复,避免数据丢失

5.4 监控告警

  • CPU、内存、磁盘监控
  • 接口可用性监控
  • 队列长度、连接数监控
  • 异常邮件/钉钉告警

6. 面试高频扩展知识点

6.1 Docker 与虚拟机区别

  • Docker:轻量、秒级启动、共享内核
  • 虚拟机:重量级、分钟级、独立内核

6.2 容器数据持久化

  • 容器本身不存数据,必须挂数据卷
  • MySQL、Redis、上传文件必须挂载

6.3 容器网络模式

  • bridge:默认,独立网络
  • host:共享宿主机网络
  • none:无网络

6.4 生产环境部署规范

  • Nginx → Docker → 后端服务
  • SSL 证书
  • 防火墙只开放 80/443
  • 非 root 运行
  • 日志、备份、监控齐全

6.5 面试必背总结

Docker:环境统一、快速部署、隔离、可移植 Compose:一键编排整个技术栈 Nginx:反向代理、负载均衡、HTTPS、静态资源、安全网关 高可用:自启动、健康检查、备份、日志、监控

相关链接

0

评论区