16、你的 Python 项目能部署吗?一篇教你用 Docker 和 venv

212 阅读1分钟

💻 写完项目 ≠ 项目完成。真正能跑在别人电脑上的代码,才叫“可交付”。这篇我们用最实用的方式教你:用 venv 管理依赖,用 Docker 实现部署


✅ 本文目标

  • 使用 venv 构建干净的 Python 环境
  • 使用 requirements.txt 管理依赖
  • 编写 Dockerfile 一键构建镜像
  • 本地运行一个 Flask 服务并打包成 Docker 镜像

🧪 一、使用 venv 创建独立 Python 环境

# 创建虚拟环境
python3 -m venv venv

# 激活环境
# macOS/Linux:
source venv/bin/activate
# Windows:
venv\Scripts\activate

# 安装依赖
pip install flask requests

📦 二、生成 requirements.txt 依赖列表

pip freeze > requirements.txt

生成的 requirements.txt 示例:

flask==3.0.0
requests==2.31.0

🔥 三、写一个最简单的 Flask 应用(demo.py)

# demo.py
from flask import Flask

app = Flask(__name__)

@app.route("/")
def home():
    return "✅ 项目部署成功!"

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

image.png

image.png


🐳 四、编写 Dockerfile 打包你的项目

# Dockerfile
FROM python:3.11-slim

WORKDIR /app

# 拷贝依赖文件 & 安装
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 拷贝项目代码
COPY . .

CMD ["python", "demo.py"]

🏗 五、构建并运行镜像

# 构建镜像
docker build -t my-python-app .

# 运行容器
docker run -p 5000:5000 my-python-app

打开浏览器访问:http://localhost:5000
你将看到:

image.png


🔁 常用 Docker 命令速查

操作命令
查看镜像docker images
查看容器docker ps -a
删除镜像docker rmi <镜像ID>
停止容器docker stop <容器ID>
删除容器docker rm <容器ID>

💡 拓展挑战

  1. 配置 .dockerignore 忽略 .pyc.venv__pycache__
  2. 添加环境变量(如 FLASK_ENV=production
  3. docker-compose.yml 管理多容器服务(如 + MongoDB)

🧠 总结一句话

写好项目是工程能力,能部署项目是交付能力。用 venv + Docker,让你的代码从“我能跑”变成“谁都能跑”。