ubuntu建虚拟环境制作docker容器

先在ubuntu中用python3建虚拟环境,source进入虚拟环境后,再用docker安装依赖包和制作容器、镜像,这是一个很好的开发实践。

为什么这样做有价值

  1. 开发调试方便:在虚拟环境中直接运行,快速测试代码修改

  2. 依赖管理清晰pip freeze 自动生成 requirements.txt

  3. 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 级别 系统级别
生产部署 不适合 ✅ 适合
相关推荐
java_logo40 分钟前
Docker 部署 Milvus:轻松搭建高性能向量数据库平台
数据库·docker·私有化部署·milvus·向量数据库·rag·轩辕镜像
yunwei372 小时前
eBPF 示例教程:实现 `scx_nest` 调度器
linux·后端·性能优化
朽棘不雕2 小时前
关于重定向的小补充
linux
T1mzhou2 小时前
ARM64 平台安全学习记录
linux·服务器·arm开发·arm
GG-_-Bond3 小时前
基于dpdk实现udp接收数据
linux·网络·udp
吴声子夜歌3 小时前
Shell编程实例——bash入门
linux·运维·shell
爱和冰阔落4 小时前
【Linux】条件变量为什么必须配合互斥锁:从 pthread_cond_wait 到阻塞队列
linux·运维·c++·缓存·中间件·安卓
tedcloud1234 小时前
God‘s Eye View 怎么搭建?在云服务器上部署一个实时 3D 地球可视化平台
linux·服务器·开发语言·后端·rust
星间都市山脉4 小时前
Android16 SystemService.onBootPhase 调用时机
android·java·linux·windows·ubuntu
初願致夕霞4 小时前
Linux 进程间通信(IPC)机制详解:管道、FIFO 与 System V 共享内存
linux·服务器·c++