先在ubuntu中用python3建虚拟环境,source进入虚拟环境后,再用docker安装依赖包和制作容器、镜像,这是一个很好的开发实践。
为什么这样做有价值
-
开发调试方便:在虚拟环境中直接运行,快速测试代码修改
-
依赖管理清晰 :
pip freeze自动生成 requirements.txt -
Docker 用于部署:测试通过后再打包成镜像
完整工作流程
第一步:创建并激活虚拟环境
# 1. 创建虚拟环境
cd ~/task_manager
python3 -m venv venv
# 2. 激活虚拟环境
source venv/bin/activate
# 终端提示符会变成 (venv) user@host:~/task_manager$
# 3. 确认环境
which python
# 输出: /home/user/task_manager/venv/bin/python
第二步:在虚拟环境中安装依赖
# 1. 升级 pip
pip install --upgrade pip
# 2. 安装项目依赖(根据你的项目)
pip install flask gunicorn
pip install requests
pip install sqlalchemy
# 或其他你需要的包
# 3. 安装 Ollama 相关(如果需要)
pip install ollama
# 或
pip install requests # 通过 HTTP 调用 Ollama API
# 4. 生成 requirements.txt
pip freeze > requirements.txt
第三步:在虚拟环境中开发测试
python app.py
第四步:准备 Dockerfile
第五步:构建 Docker 镜像
# 确保在项目目录,虚拟环境激活状态
pwd # 应该是 /home/user/task_manager
# 构建镜像(使用虚拟环境中测试通过的代码)
docker build -t task-manager:v1 .
# 查看镜像
docker images | grep task-manager
第六步:运行 Docker 容器
注意事项
⚠️ 虚拟环境和 Docker 是独立的
# 虚拟环境中的包不会影响 Docker 镜像
# Docker 镜像需要自己的 requirements.txt
# 更新依赖的正确流程:
# 1. 在虚拟环境中安装新包
source venv/bin/activate
pip install new-package
# 2. 更新 requirements.txt
pip freeze > requirements.txt
# 3. 重新构建 Docker 镜像
docker build -t task-manager:v2 .
# 4. 重新运行容器
docker stop task-manager && docker rm task-manager
docker run -d --name task-manager -p 5000:5000 task-manager:v2
总结优势
| 方面 | 虚拟环境开发 | Docker 部署 |
|---|---|---|
| 代码修改 | 实时生效,无需重启 | 需要重新构建镜像 |
| 调试 | 方便,有完整日志 | 需要查看容器日志 |
| 依赖管理 | pip install 直接安装 | 通过 requirements.txt |
| 环境隔离 | Python 级别 | 系统级别 |
| 生产部署 | 不适合 | ✅ 适合 |