Windows 11 下 Python 项目打包 Docker 镜像及服务器部署完整指南
本文详细介绍在 Windows 11 环境下,如何利用 virtualenv 创建 Python 虚拟环境,导出依赖并编写 Dockerfile,将本地项目打包为 Docker 镜像。内容涵盖镜像保存、分割传输、服务器加载、容器启停管理及数据挂载等完整运维流程,帮助开发者实现本地开发与服务器部署的一致性。
Docker环境
- Windows 11
- Docker 官方下载地址:https://docs.docker.com/desktop/install/windows-install/
创建虚拟环境
虚拟环境旨在为单个 Python 项目构建独立的运行空间,确保其依赖库与其他项目互不干扰。

完成 Docker 安装后,即可开始创建虚拟环境。执行命令 virtualenv env1 进行初始化。
C:\Users\china>virtualenv env1 Using base prefix 'c:\\program files\\python36' New python executable in C:\Users\china\env1\Scripts\python.exe Installing setuptools, pip, wheel...done.
生成的 activate.bat 文件用于激活虚拟环境。进入 Scripts 目录,在该路径下输入 activate.bat 命令,即可成功激活当前 Python 虚拟环境。

退出虚拟环境
在当前工作目录下输入命令 deactivate.bat 即可退出虚拟环境。

PyCharm 集成虚拟环境
1、启动 PyCharm,依次点击左上角 File -> Settings。
2、依次导航至 Project -> Project Interpreter,选择使用虚拟环境中的 Python 解释器,并下载所需依赖包,从而实现环境隔离。


准备打包
1. 创建好虚拟环境后,在项目根目录新建 hello.py,内容可简单编写。

2. 导出项目依赖库,使用 pip freeze > requirements.txt 命令。
在虚拟环境中下载完代码所需的包后,执行依赖导出操作,会生成 requirements.txt 文件,其中保存了当前环境的包列表。
若 Python 版本与特定包的版本存在冲突,可尝试移除 requirements.txt 中包的版本号,使系统自动下载兼容的最新包。

3. 在桌面新建一个文件夹,文件夹结构如下。

4. app 目录下的内容对应 Python 项目的根目录及子目录文件,将新建的 hello.py 放入 app 目录下。
5. 编写 Dockerfile,新建一个名为 Dockerfile 的文件,内容如下:
建议先执行 pip install -r requirements.txt -i https://pypi.douban.com/simple/ 命令,确认依赖安装无误后,再编写 Dockerfile 文件。
#基于的基础镜像 FROM python:3.7.9 #代码添加当前目录所有内容到code文件夹 ADD . /code # 设置code文件夹是工作目录 WORKDIR /code # 安装支持 RUN pip install -r requirements.txt -i https://pypi.douban.com/simple/ CMD ["python", "./app/predict/select_data_combine.py"]
6. 执行 docker build -t hello-test .,注意 hello-test 后面有一个空格和一个点(.),这里的 hello-test 是镜像名称,可随意命名。

7. 执行 docker run -it hello-test,可以看到终端输出了请求百度返回的 HTML 信息,以及 hello.py 文件中打印的 Hello Docker~。

保存为镜像文件
docker save ubuntu>ubuntu.tar
将 Ubuntu 镜像保存为 ubuntu.tar 文件。
拆分文件、合并文件
若文件体积较大导致传输耗时,可使用切割工具将文件分片传输,最后再合并文件即可。
split -b 500m log.txt newfile #切分文件log.txt,按照500MB进行切分 cat newfile* > orifile #合格文件为整个
加载镜像文件
docker load -i redis5014.tar
解压镜像文件,并查看镜像列表。
docker images
找到对应的镜像 ID,执行运行镜像的操作。
docker run -it 镜像ID
启动容器
首先检查容器是否处于开启状态。
docker ps
如果发现未开启,需显示所有容器(包括已停止的)。
docker ps -a
开启指定的容器。
docker start 容器ID
若开启容器失败,请按照如下操作排查:
docker exec -it 6198ef53d943 bash Error response from daemon: Container 6198ef53d9431a3f38e8b38d7869940f7fb803afac4a2d599812b8e42419c574 is not running docker commit 6198ef53d943 sha256:ace7ca65e6e3fdb678d9cdfb33a7a165c510e65c3bc28fecb960ac993c37ef33 docker run -it ace7ca65e6e bash root@72d38a8c787d:/#
进入容器内部。
sudo docker exec -it 容器ID bash
退出容器。
exit
复制物理路径到容器指定路径
将本地文件复制到 Docker 容器中。
docker cp 本地文件路径 容器ID/容器NAME:容器内路径
docker cp /Users/wuhanxue/Downloads/rabbitmq_delayed_message_exchange-3.9.0.ez 1faca6a70742:/opt/rabbitmq/plugins
或者
docker cp /Users/wuhanxue/Downloads/rabbitmq_delayed_message_exchange-3.9.0.ez rabbit:/opt/rabbitmq/plugins
完整语句示例。
sudo docker run -it -v /home/ubuntu/anti/docker_test:/code 2286df316633 /bin/bash
删除镜像、容器
删除镜像
直接删除指定镜像。
docker rmi 镜像ID
强制删除指定镜像。
docker rmi -f image_id
删除容器
删除指定容器。
docker rm 容器ID
如果无法直接删除,需先关闭容器,再执行删除操作。
docker stop 容器ID
强制删除指定容器。
docker rm -f container_id
优雅地删除镜像的最佳做法是:先停止容器,再删除容器,最后删除镜像。
优雅地删除容器的最佳做法是:先停止容器,再删除容器。
参考文献
- https://www.cnblogs.com/xiao-apple36/p/12810941.html
- https://blog.csdn.net/songlh1234/article/details/110400673
- https://stackoverflow.com/questions/29599632/container-is-not-running
- https://blog.csdn.net/u014282578/article/details/127866389
总结
到此这篇关于将本地 Python 项目打包成 Docker 镜像上传到服务器并在 Docker 中运行的文章就介绍到这了,更多相关 Python 打包成 Docker 镜像上传服务器内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













