Flask应用部署脚本

Charlie165 +0/-0 0 0 正常 2025-12-24T07:01:19 Docker · Flask · 部署

在Flask Web开发中,部署脚本的编写是确保应用稳定上线的关键环节。本文将对比两种常见的Flask部署方案:传统Gunicorn + Nginx配置与现代Docker容器化部署。

传统部署方案

首先,我们来看经典的Gunicorn + Nginx组合。创建部署脚本deploy.sh

#!/bin/bash
# 部署Flask应用到生产环境

# 1. 激活虚拟环境
source /opt/venv/bin/activate

# 2. 更新代码
git pull origin main

# 3. 安装依赖
pip install -r requirements.txt

# 4. 重启Gunicorn服务
sudo systemctl restart gunicorn

# 5. 重启Nginx
sudo systemctl restart nginx

# 6. 清理缓存
python manage.py clean_cache

Docker部署方案

现代Flask应用推荐使用Docker容器化部署。创建docker-compose.yml

version: '3.8'
services:
  web:
    build: .
    ports:
      - "5000:5000"
    environment:
      - FLASK_ENV=production
    volumes:
      - ./logs:/app/logs
    restart: unless-stopped
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - web

部署对比分析

传统方案适合小型项目,但维护成本高;Docker方案更易扩展和迁移。建议根据团队规模选择合适的部署方式。

完整项目示例

完整的Flask项目结构应包含:app.py、requirements.txt、config.py、部署脚本等文件,确保可复现性。

推广
广告位招租

讨论

0/2000
蓝色水晶之恋
蓝色水晶之恋 · 2026-01-08T10:24:58
这套部署脚本看起来很熟悉,但实际生产中千万别这么用。激活虚拟环境、重启服务这些操作都太粗暴了,没有健康检查和回滚机制,出问题就是全站瘫痪。建议加个gunicorn的优雅重启脚本,配合supervisor做进程监控。
Kevin252
Kevin252 · 2026-01-08T10:24:58
Docker方案确实更现代,但别光看compose文件就以为万事大吉。生产环境的volume挂载、日志切割、资源限制、网络隔离这些细节,一个不小心就会踩坑。至少得加个healthcheck和资源限制参数,不然容器跑着跑着就占满服务器。
GoodGuru
GoodGuru · 2026-01-08T10:24:58
部署脚本最该关注的是幂等性和安全性。比如git pull可能失败,pip install可能冲突,重启服务前最好先检查进程状态。别忘了加个部署成功后的通知机制,不然出了问题没人知道。建议把部署流程做成CI/CD流水线,而不是手动执行的shell脚本。