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

 更新时间:2023年12月08日 11:17:22   作者:安替-AnTi  
Docker是一个开源项目,为开发人员和系统管理员提供了一个开放平台,可以将应用程序构建、打包为一个轻量级容器,并在任何地方运行,这篇文章主要给大家介绍了关于将本地Python项目打包成docker镜像上传到服务器并在docker中运行的相关资料,需要的朋友可以参考下

Docker环境

创建虚拟环境

虚拟环境可以搭建独立的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文件

拆分文件、合并文件

如何文件较大传输耗时,可以切割文件,分词传输,再合并文件即可。

split -b 500m log.txt newfile #切分文件log.txt,按照500MB进行切分
cat newfile* > orifile #合格文件为整个

加载镜像文件

docker load -i redis5014.tar

解压镜像文件,查看镜像

docker images

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

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镜像上传服务器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Python3 中的字符串格式化语法

    详解Python3 中的字符串格式化语法

    字符串的格式化方法分为两种,分别为占位符(%)和format方式。这篇文章主要介绍了Python3 中的字符串格式化语法问题,需要的朋友可以参考下
    2020-01-01
  • Django使用echarts进行可视化展示的实践

    Django使用echarts进行可视化展示的实践

    可视化是将数据转换成图形或图像在屏幕上显示出来,本文主要介绍了Django使用echarts进行可视化展示的实践,感兴趣的可以了解一下
    2021-06-06
  • python用matplotlib绘制二维坐标轴,设置箭头指向,文本内容方式

    python用matplotlib绘制二维坐标轴,设置箭头指向,文本内容方式

    这篇文章主要介绍了python用matplotlib绘制二维坐标轴,设置箭头指向,文本内容方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Python中声明只包含一个元素的元组数据方法

    Python中声明只包含一个元素的元组数据方法

    这篇文章主要介绍了Python中声明只包含一个元素的元组数据方法,本文是实际经验总结而来,没有碰到这个需要可能不会注意到这个问题,需要的朋友可以参考下
    2014-08-08
  • Python Web框架Flask信号机制(signals)介绍

    Python Web框架Flask信号机制(signals)介绍

    这篇文章主要介绍了Python Web框架Flask信号机制(signals)介绍,本文介绍Flask的信号机制,讲述信号的用途,并给出创建信号、订阅信号、发送信号的方法,需要的朋友可以参考下
    2015-01-01
  • Python中jieba库的使用方法

    Python中jieba库的使用方法

    jieba库是一款优秀的 Python 第三方中文分词库,本文主要介绍了Python中jieba库的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • python3中SQLMap安装教程

    python3中SQLMap安装教程

    本文主要介绍了python3中SQLMap安装教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • python 有效的括号的实现代码示例

    python 有效的括号的实现代码示例

    这篇文章主要介绍了python 有效的括号的实现代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Pillow图像颜色处理的具体使用

    Pillow图像颜色处理的具体使用

    Pillow 提供了颜色处理模块 ImageColor,该模块支持不同格式的颜色,可以修改RGB的颜色,具有一定的参考价值,感兴趣的可以了解一下
    2021-11-11
  • python数据结构之链表详解

    python数据结构之链表详解

    这篇文章主要为大家详细介绍了python数据结构之链表的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09

最新评论