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

news2024/11/15 9:56:41

文章目录

  • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/453416.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ORACLE_OCM.MGMT_CONFIG_JOB_2_2

今天巡检一套AIX上11g rac,发现有个报错 Errors in file /opt/app/oracle/diag/rdbms/orcl/orcl2/trace/orcl2_j000_16777270.trc: ORA-12012: error on auto execute of job "ORACLE_OCM"."MGMT_CONFIG_JOB_2_2" ORA-29280: invalid director…

〖Python网络爬虫实战⑱〗- 数据存储之TXT纯文本

订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付…

WebSocket+Vue+SpringBoot实现语音通话

参考文章 整体思路 前端点击开始对话按钮后,将监听麦克风,获取到当前的音频,将其装化为二进制数据,通过websocket发送到webscoket服务端,服务端在接收后,将消息写入给指定客户端,客户端拿到发送…

Automa自动化爬取文本(一)

目录 介绍 下载地址 安装教程 爬取百度热搜 介绍 Automa 是一个免费、开源的 Chrome 扩展,它通过目前流行的 No Code 无代码方式,只需要拖拽模块就实现了浏览器自动化,比如自动填写表格、执行重复性任务。 在工作中,如果我们…

Docker安装Nginx(图文详解版)

目录 1.下载Nginx镜像 2.创建Nginx配置文件 3.创建Nginx容器并运行 4.查看效果 1.下载Nginx镜像 命令描述docker pull nginx下载最新版Nginx镜像 (此命令等同于 : docker pull nginx:latest )docker pull nginx:xxx下载指定版本的Nginx镜像 (xxx指具体版本号&a…

有趣的 Kotlin 0x14:Base64编码

前言 Concise. Cross‑platform. Fun. Kotlin 来到 1.8.20 版本, 又给开发者带来了很多更新, 今天关注下标准库中新增的 Base64 相关内容. 原理 Base64编码是一种将二进制数据转换为可打印ASCII字符的编码方式。它使用64个不同的字符(通常是A-Z、a-z、0-9和两个额…

学会SpringBoot的第一天(超详细)

🙈作者简介:练习时长两年半的Java up主 🙉个人主页:老茶icon 🙊 ps:点赞👍是免费的,却可以让写博客的作者开兴好久好久😎 📚系列专栏:Java全栈,计…

d2l Transformer

终于到变形金刚了,他的主要特征在于多头自注意力的使用,以及摒弃了rnn的操作。 目录 1.原理 2.多头注意力 3.逐位前馈网络FFN 4.层归一化 5.残差连接 6.Encoder 7.Decoder 8.训练 9.预测 1.原理 主要贡献:1.纯使用attention的Enco…

JavaFX与Liberica JDK,搭建,运行,打包,放弃Eclipse

1、官网 JavaFX中文官方网站、Oracle官方文档 2、教程 JavaFX中文基础教程视频合集 JavaFX实战教程 3、VSCode/Eclipse VSCode(写HelloWorld用)、VSCode的Java扩展 Eclipse,跳至第9段 4、Liberica JDK安装 Liberica JDK官网下载 依次选择,All ve…

压力测试防踩坑指南,压测中要注意的那些事儿

对于一些高频访问接口,压力测试必不可少,本文主要叙述了自己在压测过程中遇到的问题,在此分享,希望能帮助大家避免踩坑,提高效率。 1.pod数量 现象:服务器资源充足,tps上不去,检查发…

OneData 共享同一套数据技术和资产

一、什么是 OneData 体系? 官方:阿里云OneData数据中台解决方案基于大数据存储和计算平台为载体,以OneModel统一数据构建及管理方法论为主干,OneID核心商业要素资产化为核心,实现全域链接、标签萃取、立体画像,以数据…

ASEMI代理ADI亚德诺ADAU1701JSTZ-RL车规级芯片

编辑-Z ADAU1701JSTZ-RL芯片参数: 型号:ADAU1701JSTZ-RL 模拟电源电压:3.3 V 数字电源电压:1.8 V 输入/输出电压:3.3 V 环境温度:25 C 主时钟输入:12.288 MHz 满刻度模拟输入&#xff1…

彻底掌握FreeRTOS中的务通知(Task Notifications)

​在之前的文章中已经讲解了很多种用于任务件通信的机制,包括队列、事件组和各种不同类型的信号量。使用这些机制都需要创建一个通信对象。 事件和数据不会直接发送到接收任务或接收ISR,而是发送到通信对象(也就是发送到队列、事件组、信号量…

2023软考中级《软件设计师》(备考冲刺版) | 操作系统

目录 1.操作体统相关概念 1.1 操作系统的功能 1.2 特殊的操作系统 2.进程管理 2.1进程的概念 2.1.1 线程的概念 2.1.2 进程的状态 2.2 进程调度 2.2.1 PV操作的概念 2.2.2 信号量和PV操作 2.2.3 前趋图与PV操作 3.存储管理 3.1 页式存储 3.2 段式存储 3.3 段页式…

智慧安防小区管控系统解决方案(ppt可编辑)

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除 智慧安防小区-建设思路及目标 智慧安防小区管控子系统是,按照“数据向上集中、服务向下延伸”的思路,对相关要素进行重点采集,实现社区态势…

【JAVAEE】网络原理之网络通信基础

目录 1. 💋IP地址 1.1 🍟IP地址的格式 1.2 🎁特殊IP地址 2. ✨端口号 2.1 🎃端口号的格式 3. 😘网络协议 3.1 🎨为什么需要网络协议? 3.2 💛网络协议的概念与组成 3.3 &am…

答题积分小程序云开发实战-界面交互篇:首页页面布局样式与逻辑交互开发

微信小程序云开发实战-答题积分赛小程序 界面交互篇:首页页面布局样式与逻辑交互开发 首页效果图 布局思路 5行布局,即5个块级元素,轮播图、通告栏、个人信息、功能区、版权。

将服务器select模型设置为非阻塞,处理更多业务

timeval结构体在头文件为sys/time.h中,定义如下: struct timeval {long tv_sec; /* seconds */long tv_usec; /* and microseconds */ }; 其中tv_sec是秒,tv_usec是微秒(microsecond )&#xff0…

[单片机框架][bsp层][cx32l003][bsp_tim] Baes TIM 基础定时器配置和使用

文章目录 一、基础定时器介绍二、功能描述(1) Buzzer 功能 三、示例代码(PWM) 一、基础定时器介绍 基础定时器 Base Timer 包含两个定时器 TIM10/11。TIM10/11 功能完全相同。TIM10/11 是同步定时/计数器,可以作为 16/32 位自动重装载功能的定时/计数器&#xff0c…

VS2022配置GDAL

GDAL(Geospatial Data Abstraction Library)是一个用于处理地理空间数据的开源库。它提供了一组功能丰富的API,用于读取、写入、转换和处理各种地理空间数据格式,包括栅格数据(如卫星图像、数字高程模型)和…