原创 Python 云部署与容器化实战:用 Docker + Flask 打包你的 Web 应用

2025-6-12 16:36 2099 0 1 分类: 物联网

本文教你从开发到部署,用 Docker 将 Python Flask 应用容器化,引入反向代理 Nginx,实现 HTTPS 支持、环境隔离与持续部署准备,是现代开发者必备的实战技能。


https://txc.qq.com/products/732159/blog/1106857 https://txc.qq.com/products/732159/blog/1106856 https://txc.qq.com/products/732160/blog/1106855 https://txc.qq.com/products/732159/blog/1106854 https://txc.qq.com/products/732160/blog/1106853 https://txc.qq.com/products/732159/blog/1106852 https://txc.qq.com/products/732160/blog/1106851 https://txc.qq.com/products/732159/blog/1106850 https://txc.qq.com/products/732160/blog/1106849 https://txc.qq.com/products/732159/blog/1106848 https://txc.qq.com/products/732160/blog/1106847 https://txc.qq.com/products/732159/blog/1106846 https://txc.qq.com/products/732159/blog/1106845 https://txc.qq.com/products/732160/blog/1106844 https://txc.qq.com/products/732159/blog/1106843 https://txc.qq.com/products/732160/blog/1106842 https://txc.qq.com/products/732159/blog/1106841 https://txc.qq.com/products/732160/blog/1106840 https://txc.qq.com/products/732159/blog/1106839 https://txc.qq.com/products/732160/blog/1106838 https://txc.qq.com/products/732159/blog/1106837 https://txc.qq.com/products/732160/blog/1106836 https://txc.qq.com/products/732159/blog/1106835 https://txc.qq.com/products/732160/blog/1106834 https://txc.qq.com/products/732159/blog/1106833 https://txc.qq.com/products/732160/blog/1106832 https://txc.qq.com/products/732159/blog/1106831 https://txc.qq.com/products/732160/blog/1106830 https://txc.qq.com/products/732159/blog/1106829 https://txc.qq.com/products/732160/blog/1106828 https://txc.qq.com/products/732159/blog/1106827 https://txc.qq.com/products/732160/blog/1106826 https://txc.qq.com/products/732159/blog/1106825 https://txc.qq.com/products/732160/blog/1106824 https://txc.qq.com/products/732160/blog/1106823 https://txc.qq.com/products/732159/blog/1106822 https://txc.qq.com/products/732160/blog/1106821 https://txc.qq.com/products/732159/blog/1106820 https://txc.qq.com/products/732160/blog/1106819 https://txc.qq.com/products/732159/blog/1106818 https://txc.qq.com/products/732160/blog/1106817 https://txc.qq.com/products/732159/blog/1106816 https://txc.qq.com/products/732160/blog/1106815 https://txc.qq.com/products/732159/blog/1106814 https://txc.qq.com/products/732160/blog/1106813 https://txc.qq.com/products/732159/blog/1106812 https://txc.qq.com/products/732160/blog/1106811 https://txc.qq.com/products/732159/blog/1106810 https://txc.qq.com/products/732160/blog/1106809 https://txc.qq.com/products/732159/blog/1106808 https://txc.qq.com/products/732160/blog/1106807 https://txc.qq.com/products/732159/blog/1106806 https://txc.qq.com/products/732159/blog/1106805 https://txc.qq.com/products/732160/blog/1106804 https://txc.qq.com/products/732159/blog/1106803 https://txc.qq.com/products/732160/blog/1106802 https://txc.qq.com/products/732159/blog/1106801 https://txc.qq.com/products/732160/blog/1106800 https://txc.qq.com/products/732159/blog/1106799 https://txc.qq.com/products/732160/blog/1106798 https://txc.qq.com/products/732159/blog/1106797 https://txc.qq.com/products/732160/blog/1106796 https://txc.qq.com/products/732159/blog/1106795 https://txc.qq.com/products/732160/blog/1106794 https://txc.qq.com/products/732159/blog/1106793 https://txc.qq.com/products/732160/blog/1106792 https://txc.qq.com/products/732159/blog/1106791 https://txc.qq.com/products/732160/blog/1106790 https://txc.qq.com/products/732159/blog/1106789 https://txc.qq.com/products/732159/blog/1106788 https://txc.qq.com/products/732160/blog/1106787 https://txc.qq.com/products/732159/blog/1106786 https://txc.qq.com/products/732160/blog/1106785 https://txc.qq.com/products/732159/blog/1106784 https://txc.qq.com/products/732160/blog/1106783 https://txc.qq.com/products/732159/blog/1106782 https://txc.qq.com/products/732160/blog/1106781 https://txc.qq.com/products/732159/blog/1106780 https://txc.qq.com/products/732160/blog/1106779 https://txc.qq.com/products/732159/blog/1106778 https://txc.qq.com/products/732160/blog/1106777 https://txc.qq.com/products/732160/blog/1106776 https://txc.qq.com/products/732159/blog/1106775 https://txc.qq.com/products/732160/blog/1106774 https://txc.qq.com/products/732159/blog/1106773 https://txc.qq.com/products/732160/blog/1106772 https://txc.qq.com/products/732160/blog/1106771 https://txc.qq.com/products/732160/blog/1106770 https://txc.qq.com/products/732159/blog/1106769 https://txc.qq.com/products/732159/blog/1106768 https://txc.qq.com/products/732160/blog/1106767 https://txc.qq.com/products/732132/blog/1106766 https://txc.qq.com/products/732132/blog/1106765 https://txc.qq.com/products/732132/blog/1106764 https://txc.qq.com/products/732132/blog/1106762 https://txc.qq.com/products/732132/blog/1106761 https://txc.qq.com/products/732132/blog/1106759 https://txc.qq.com/products/732132/blog/1106757 https://txc.qq.com/products/732132/blog/1106756 https://txc.qq.com/products/732132/blog/1106754 https://txc.qq.com/products/732132/blog/1106752 https://txc.qq.com/products/732132/blog/1106750 https://txc.qq.com/products/732132/blog/1106749 https://txc.qq.com/products/732132/blog/1106747 https://txc.qq.com/products/732132/blog/1106746 https://txc.qq.com/products/732132/blog/1106744 https://txc.qq.com/products/732132/blog/1106743 https://txc.qq.com/products/732132/blog/1106742 https://txc.qq.com/products/732132/blog/1106741 https://txc.qq.com/products/732132/blog/1106740 https://txc.qq.com/products/732132/blog/1106739 https://txc.qq.com/products/732132/blog/1106738 https://txc.qq.com/products/732132/blog/1106737 https://txc.qq.com/products/732132/blog/1106736 https://txc.qq.com/products/732132/blog/1106735 https://txc.qq.com/products/732132/blog/1106734 https://txc.qq.com/products/732132/blog/1106733 https://txc.qq.com/products/732132/blog/1106732 https://txc.qq.com/products/732132/blog/1106731 https://txc.qq.com/products/732132/blog/1106730 https://txc.qq.com/products/732132/blog/1106729 https://txc.qq.com/products/732132/blog/1106728 https://txc.qq.com/products/732132/blog/1106727 https://txc.qq.com/products/732132/blog/1106726 https://txc.qq.com/products/732132/blog/1106725 https://txc.qq.com/products/732132/blog/1106724 https://txc.qq.com/products/732132/blog/1106723 https://txc.qq.com/products/732132/blog/1106722 https://txc.qq.com/products/732132/blog/1106721 https://txc.qq.com/products/732132/blog/1106720 https://txc.qq.com/products/732132/blog/1106719 https://txc.qq.com/products/732132/blog/1106718 https://txc.qq.com/products/732132/blog/1106717 https://txc.qq.com/products/732132/blog/1106716 https://txc.qq.com/products/732132/blog/1106715 https://txc.qq.com/products/732132/blog/1106714 https://txc.qq.com/products/732132/blog/1106713 https://txc.qq.com/products/732132/blog/1106712 https://txc.qq.com/products/730600/blog/1106711 https://txc.qq.com/products/730402/blog/1106710 https://txc.qq.com/products/730600/blog/1106709 https://txc.qq.com/products/730402/blog/1106708 https://txc.qq.com/products/730600/blog/1106707 https://txc.qq.com/products/730402/blog/1106706 https://txc.qq.com/products/730600/blog/1106705 https://txc.qq.com/products/730402/blog/1106704 https://txc.qq.com/products/730600/blog/1106703 https://txc.qq.com/products/730402/blog/1106702 https://txc.qq.com/products/730600/blog/1106701 https://txc.qq.com/products/730402/blog/1106700 https://txc.qq.com/products/730600/blog/1106699 https://txc.qq.com/products/730402/blog/1106698 https://txc.qq.com/products/730600/blog/1106697 https://txc.qq.com/products/730402/blog/1106696 https://txc.qq.com/products/730600/blog/1106695 https://txc.qq.com/products/730402/blog/1106694 https://txc.qq.com/products/730600/blog/1106693 https://txc.qq.com/products/730402/blog/1106692 https://txc.qq.com/products/730600/blog/1106691 https://txc.qq.com/products/730402/blog/1106690 https://txc.qq.com/products/730600/blog/1106689 https://txc.qq.com/products/730402/blog/1106688 https://txc.qq.com/products/730600/blog/1106687 https://txc.qq.com/products/730402/blog/1106686 https://txc.qq.com/products/730600/blog/1106685 https://txc.qq.com/products/730402/blog/1106684 https://txc.qq.com/products/730600/blog/1106683 https://txc.qq.com/products/730402/blog/1106682 https://txc.qq.com/products/730600/blog/1106681 https://txc.qq.com/products/730402/blog/1106680 https://txc.qq.com/products/730600/blog/1106679 https://txc.qq.com/products/730402/blog/1106678 https://txc.qq.com/products/730600/blog/1106677 https://txc.qq.com/products/730402/blog/1106676 https://txc.qq.com/products/730600/blog/1106675 https://txc.qq.com/products/730402/blog/1106674 https://txc.qq.com/products/730600/blog/1106673 https://txc.qq.com/products/730402/blog/1106672 https://txc.qq.com/products/730600/blog/1106671 https://txc.qq.com/products/730402/blog/1106670 https://txc.qq.com/products/730600/blog/1106669 https://txc.qq.com/products/730402/blog/1106668 https://txc.qq.com/products/730600/blog/1106667 https://txc.qq.com/products/730402/blog/1106666 https://txc.qq.com/products/730600/blog/1106665 https://txc.qq.com/products/730402/blog/1106664 https://txc.qq.com/products/730600/blog/1106663 https://txc.qq.com/products/730402/blog/1106662 https://txc.qq.com/products/730600/blog/1106661 https://txc.qq.com/products/730402/blog/1106660 https://txc.qq.com/products/730600/blog/1106659 https://txc.qq.com/products/730402/blog/1106658 https://txc.qq.com/products/730600/blog/1106657 https://txc.qq.com/products/730402/blog/1106656 https://txc.qq.com/products/730600/blog/1106655 https://txc.qq.com/products/730402/blog/1106654 https://txc.qq.com/products/730600/blog/1106653 https://txc.qq.com/products/730600/blog/1106652 https://txc.qq.com/products/730402/blog/1106651 https://txc.qq.com/products/730600/blog/1106650 https://txc.qq.com/products/730402/blog/1106649 https://txc.qq.com/products/730600/blog/1106648 https://txc.qq.com/products/730402/blog/1106647 https://txc.qq.com/products/730402/blog/1106646 https://txc.qq.com/products/730600/blog/1106645 https://txc.qq.com/products/730402/blog/1106644 https://txc.qq.com/products/730600/blog/1106643 https://txc.qq.com/products/730402/blog/1106642 https://txc.qq.com/products/730600/blog/1106641 https://txc.qq.com/products/730600/blog/1106640 https://txc.qq.com/products/730402/blog/1106639 https://txc.qq.com/products/730402/blog/1106638 https://txc.qq.com/products/730600/blog/1106637 https://txc.qq.com/products/730402/blog/1106636 https://txc.qq.com/products/730600/blog/1106635 https://txc.qq.com/products/730402/blog/1106634 https://txc.qq.com/products/730600/blog/1106633 https://txc.qq.com/products/730402/blog/1106632 https://txc.qq.com/products/730600/blog/1106631 https://txc.qq.com/products/730402/blog/1106630 https://txc.qq.com/products/730600/blog/1106629 https://txc.qq.com/products/730402/blog/1106628 https://txc.qq.com/products/730600/blog/1106627 https://txc.qq.com/products/730402/blog/1106626 https://txc.qq.com/products/730402/blog/1106625 https://txc.qq.com/products/730600/blog/1106624 https://txc.qq.com/products/730402/blog/1106623 https://txc.qq.com/products/730600/blog/1106622 https://txc.qq.com/products/730402/blog/1106621 https://txc.qq.com/products/730600/blog/1106620 https://txc.qq.com/products/730402/blog/1106619 https://txc.qq.com/products/730600/blog/1106618 https://txc.qq.com/products/730402/blog/1106617 https://txc.qq.com/products/730600/blog/1106616

一、为什么要用 Docker 部署 Python 应用?

  • 可移植:一键生成一致运行环境,避免“在我本地能跑”的困扰。
  • 隔离性强:依赖独立,不会干扰主机环境或其他容器。
  • 易扩展:集群部署、负载均衡、水平扩容毫无压力。
  • CI/CD 支持:配合 Travis/GitHub Actions 分分钟自动化构建。
  • 搭配 Nginx/HTTPS:容器中运行生产级 Web 服务。

二、项目结构

markdown
复制编辑
flask_docker_app/ ├── app/ │ ├── __init__.py│   ├── main.py│   └── requirements.txt├── Dockerfile├── docker-compose.yml└── nginx/ ├── Dockerfile └── nginx.conf

三、准备 Flask 基础应用

app/main.py

python
复制编辑
from flask import Flask, jsonify app = Flask(__name__) @app.route("/") defhome(): return jsonify({"message": "Hello from Flask in Docker!"}) if __name__ == "__main__": app.run(host="0.0.0.0", port=5000)

app/requirements.txt

ini
复制编辑
Flask==2.1.1

四、容器化:编写 Dockerfile

dockerfile
复制编辑
FROM python:3.10-slim WORKDIR /usr/src/app COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt COPY main.py ./ CMD ["python", "main.py"]

镜像体积小、构建速度快。


五、将应用与 Nginx 结合(docker-compose)

docker-compose.yml

yaml
复制编辑
version:'3.8'services:web:build:./appcontainer_name:flask_appports:-"5000:5000"nginx:build:./nginxcontainer_name:nginx_proxyports:-"80:80"depends_on:-web

六、NGINX 配置(docker/nginx/nginx.conf)

nginx
复制编辑
events {} http { server { listen80; location / { proxy_pass http://flask_app:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } }

反向代理让 Flask 更像专属服务器。


七、构建并运行

bash
复制编辑
docker-compose up --build

访问 http://localhost/,即可看到 JSON 返回内容。


八、加入 HTTPS 支持(可选)

  1. 获取证书(Let’s Encrypt);
  2. 修改 Nginx 配置为 listen 443 ssl;
  3. 挂载证书路径到容器,重启即可支持 HTTPS。

九、优化与扩展方向

  • Gunicorn/Celery:生产用 WSGI 容器、异步任务;
  • 环境变量管理:使用 .env,安全配置数据库密码;
  • CI/CD 集成:写 Jenkinsfile 或使用 GitHub Actions;
  • 多服务组合:增加 Redis/数据库服务,同构成完整系统;
  • 监控日志:配置 ELK/Prometheus 收集日志。

十、总结

通过本文你学到了:

  • 使用 Dockerfile 构建容器化的 Flask 环境;
  • 用 docker-compose 管理多容器(Web + Nginx)部署结构;
  • 能快速搭建一个生产级环境并对接 HTTPS;
  • 节省环境配置时间,提高部署一致性,适应团队协作与上线管理。

作者: 小菜菜编程, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-4114532.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

eeNick 2025-6-16 08:55

奖励30E币
相关推荐阅读
小菜菜编程 2025-07-02 09:17
Python 实战:构建轻量级远程服务器批量控制平台
一、背景与目标在企业或个人 DevOps 场景中,我们常常需要:同时向多台服务器下发命令(如同步脚本、重启服务)实时查看每台服务器的执行结果支持主机分组(按环境或角色划分)不借助 Ansible 等大...
小菜菜编程 2025-06-26 23:38
Wi-Fi HaLow(802.11ah)技术原理与物联网工程应用实践
一、前言:传统 Wi-Fi 的“低功耗延伸”来了近年来,随着智能农业、智慧物流、工业物联网、远程环境监测等场景的爆发,对无线通信提出了新的挑战:通信距离要远(百米至公里);设备密度要高(一个网关连接成...
小菜菜编程 2025-06-26 06:39
小体积高效率 DC-DC 模块设计全流程
一、项目背景与设计目标假设你在设计一个嵌入式系统,它需要如下电源规格:项目需求说明输入电压6V ~ 24V(适配器或电池供电)输出电压3.3V ±5%输出电流最大 2A体积限制模块尺寸 < 25...
小菜菜编程 2025-06-24 06:06
Spring Cloud Alibaba 实战:构建国产化微服务生态系统的核心指南
随着微服务架构在企业级系统中的广泛应用,Spring Cloud Alibaba 成为开发者广泛采用的国产微服务框架之一。它构建在 Spring Cloud 基础之上,整合了阿里巴巴开源的多款中间件,...
小菜菜编程 2025-06-23 23:11
C++20 协程(coroutine)原理与实战:构建异步任务的未来范式
一、引言:为什么需要协程?在传统 C++ 编程中,编写异步逻辑往往依赖:多线程 + 回调(callback)状态机或手动维护任务状态std::future + std::promise 等组合机制这些...
EE直播间
更多
我要评论
1
0
关闭 站长推荐上一条 /2 下一条