> 文章列表 > 将本地Python项目打包成docker镜像,上传到服务器,在docker中运行

将本地Python项目打包成docker镜像,上传到服务器,在docker中运行

将本地Python项目打包成docker镜像,上传到服务器,在docker中运行

文章目录

  • Docker环境
  • 创建虚拟环境
    • pycharm使用虚拟环境
    • 准备打包
    • 保存为镜像文件
    • 加载镜像文件
  • 参考文献

Docker环境

  • windows11
  • Docker下载地址:https://docs.docker.com/desktop/install/windows-install/

创建虚拟环境

虚拟环境可以搭建独立的Python运行环境,使得单个项目的运行环境与其他项目互不影响。
在这里插入图片描述
安装完成之后,便可以直接创建虚拟环境了,使用命令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文件

加载镜像文件

docker load -i redis5014.tar

解压镜像文件,查看镜像

docker images

找到对应的镜像,执行镜像

docker run -it 镜像ID

参考文献

  • https://www.cnblogs.com/xiao-apple36/p/12810941.html
  • https://blog.csdn.net/songlh1234/article/details/110400673