如何在docker部署一个python项目

news2025/2/24 17:32:45

导语:
我之前已经实现了在服务器上直接部署一个文件,但是那种部署方式有个明显的缺陷:我如果需要在其他机器部署该项目时,需要重新配置项目所依赖的环境。因此我们需要一种只需要配置一次环境依赖,就可以在其他机器上随心所欲部署项目的方式——docker容器化部署!
在这里插入图片描述

安装docker:
想要在docker部署一个项目,我们首先需要有docker的环境,具体的配置方式可以参考我另一篇文章:https://blog.csdn.net/Test_the_rookie/article/details/132166094?spm=1001.2014.3001.5501
编写dockerfile文件:
如果你看看这里,你肯定会疑问什么是dockerfile文件?它的作用又是什么?
dockerfile:是一种文本文件,用于定义docker镜像构建的过程和配置,里面含有一系列的参数和配置,如基础镜像、依赖项、工作目录等。通过dockerfile能够重复快速的构建镜像,生成的镜像的环境以及依赖完全一致。
下面是一个dockerfile文件的基础示例。
在这里插入图片描述
将项目复制到宿主机:
参考之前直接在Linux机器上部署项目的文章:https://blog.csdn.net/Test_the_rookie/article/details/131452195?spm=1001.2014.3001.5501

启动docker服务:
执行命令:docker version,出现下图所示的内容时,表示docker服务未能启动
在这里插入图片描述
此时需要执行命令:sudo systemctl restart docker,然后执行命令docker version 出现下图所示的内容表示docker服务已启动
在这里插入图片描述

构建docker镜像:
执行命令:docker build -t 镜像名 .
该命令的含义如下:
docker build:构建镜像的命令
-t:用于指定新镜像的名称
. :表示构建的路径,代表的是当前目录,即构建镜像时,会在当前目录找到dockerfile文件,会根据dockerfile文件的配置构建镜像
当出现图示内容时,表示镜像构建成功!
在这里插入图片描述
可以通过命令:docker images,查看容器中的镜像,我标记的就是刚才构建的test镜像
在这里插入图片描述

启动容器:
执行命令:docker run -d -p 映射端口:项目端口号 镜像名 (-d 表示后台启动)
在这里插入图片描述
通过命令:docker ps -a ,可以查看正在运行的容器,up表示正在运行,exited表示容器已经停止运行
在这里插入图片描述
可以通过命令:docker logs -f 容器id 查看容器的运行日志
在这里插入图片描述

访问:
在其同一局域网的其他机器上,输入https:\宿主机ip:映射的端口号,即可访问对应的项目

在这里插入图片描述

拓展:

1.设置全局镜像加速,我们上面的示例是的加速源,是针对某一个容器的,如果其他容器想要加速,则每次都需要在dockerfile中设置加速源。为了方便操作,我们可以在宿主机执行命令:
sudo vim /etc/docker/daemon.json,进入文件中后,切入编辑模式,在配置中添加如下内容
{
“registry-mirrors”: [“https://xxxxxxxx.mirror.aliyuncs.com”]
}
xxxxxxxx 替换为您的阿里云加速器地址。您可以在阿里云容器镜像服务中找到您的专属加速器地址。也可以配置成其他加速源,或者多个加速源并存。配置完成之后,执行命令sudo systemctl restart docker 重启docker服务。后续dockerfile中就无需在设置加速源了 。
2.dockerfile文件的命名不用强制为dockerfile,如果使用其他名称时,构建镜像时,需要使用-f 参数指定对应dockerfile文件的路径以及名称,用于构建镜像。
3.在启动容器使用-p参数指定端口映射时,一定要注意,第一个端口是你要映射的端口,第二个是你项目中指定的端口号,不是dockfile中外抛的端口号。

                            -------------------------------学海无涯

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

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

相关文章

KubeSphere 部署 Zookeeper 实战教程

前言 知识点 定级:入门级如何利用 AI 助手辅助运维工作单节点 Zookeeper 安装部署集群模式 Zookeeper 安装部署开源应用选型思想 实战服务器配置(架构 1:1 复刻小规模生产环境,配置略有不同) 主机名IPCPU内存系统盘数据盘用途ks-master-0192.168.9.9…

【类和对象】收尾总结

目录 一、初始化列表 1.格式要求 (1) 初始化列表初始化 ①括号中是初始值 ②括号中是表达式 (2) 初始化列表和函数体混用 2.特点 ①初始化时先走初始化列表,再走函数体 ②拷贝构造函数属于特殊的构造函数,函数内也可以使用初始化列表进行初始化 …

YOLOv5-7.0实例分割+TensorRT部署

一:介绍 将YOLOv5结合分割任务并进行TensorRT部署,是一项既具有挑战性又令人兴奋的任务。分割(Segmentation)任务要求模型不仅能够检测出目标的存在,还要精确地理解目标的边界和轮廓,为每个像素分配相应的…

使用Git进行项目版本控制

1、什么是Git? GIT,全称是分布式版本控制系统,git通常在编程中会用到,并且git支持分布式部署,可以有效、高速的处理从很小到非常大的项目版本管理。分布式相比于集中式的最大区别在于开发者可以提交到本地&#xff0c…

SOLIDWORKS参数化设计表方法

客户痛点:随着人力资源价格的增长,设计人员不足,需要3D建模的数量多,为方便后续的CAM程序。 数据问题:之前是使用二维图纸,标准件/非标准件产品简单,都是单件,图纸发放以二维方式&a…

【C++标准模板库STL】map, unordered_map, set, unordered_set简介与常用函数

文章目录 map是STL中的标准容器,以键值对的形式存储,即为哈希表,并且是有序的unordered_map也是表示哈希表的容器,但是没有顺序,unordered_map查询单个key的时候效率比map高,但是要查询某一范围内的key值时…

【LeetCode每日一题】——128.最长连续序列

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 哈希表 二【题目难度】 中等 三【题目编号】 128.最长连续序列 四【题目描述】 给定一个未…

[保研/考研机试] KY56 数制转换 北京大学复试上机题 C++实现

题目链接: 数制转换https://www.nowcoder.com/share/jump/437195121691734210665 描述 求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。 不同进制的表示符号为(0&a…

正则表达式试炼

我希望在这里列出我很多想写的正则表达式,很多我想写,但是不知道怎么写的。分享点滴案例。未来这个文章会越来越长 案例 我有这样的一批文字,我需要删掉Mozilla/5.0前面的所有内容,如果可以用正则表达式批量匹配到,删…

面向数据科学家的懒惰Python 库

你今天感到昏昏欲睡吗?使用这五个库来提高您的工作效率。 一、介绍 数据科学既鼓舞人心,又具有挑战性。通过绘制各种图表以及微调模型以获得最佳结果来执行数据预处理和清理并从数据中生成见解是相当费力的。 在这篇博客中,我将向您介绍五个 …

YOLO v8目标跟踪详细解读(一)

在此之前,我们已经对yolo系列做出了详细的探析,有兴趣的朋友可以参考yolov8等文章。YOLOV8对生态进行了优化,目前已经支持了分割,分类,跟踪等功能,这对于我们开发者来说,是十分便利。今天我们对…

沐渥六门氮气柜技术参数详解

氮气柜是用来存储电子元器件、芯片、半导体器件、金属材料、电路板、精密仪器等物品的设备,通过充入氮气降低柜内湿度,达到防潮、防氧化、防静电、防锈和防霉效果。 六门氮气柜参数 1、容积:约1380L;外尺寸:W1200*D700…

【人工智能前沿弄潮】—— SAM系列:SAM从提示生成物体mask

SAM从提示生成物体mask Segment Anything Model(SAM)根据指示所需的对象来预测对象掩码。该模型首先将图像转换为图像嵌入,从而可以从提示中高效地生成高质量的掩码。 SamPredictor类为模型提供了一个简单的接口来提示模型。用户可以首先使…

LeetCode 33题:搜索旋转排序数组

目录 题目 思路 代码 暴力解法 分方向法 二分法 题目 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 …

Macbook pro、air、imac 在打字好卡,延迟特别严重,要怎么解决?

MacBook pro在打字好卡&#xff0c;延迟特别严重&#xff0c;到底是什么问题呢&#xff1f;卡的死&#xff0c;打个字要反应很久很久才能响应过来&#xff0c;这不是我理想中的macbook pro。以前也没有这样的问题&#xff0c;找找原因。 上网逛了一圈&#xff0c;发现大家都说…

自动切换HTTP爬虫ip助力Python数据采集

在Python的爬虫世界里&#xff0c;你是否也被网站的IP封锁问题困扰过&#xff1f;别担心&#xff0c;我来教你一个终极方案&#xff0c;让你的爬虫自动切换爬虫ip&#xff0c;轻松应对各种封锁和限制&#xff01;快来跟我学&#xff0c;让你的Python爬虫如虎添翼&#xff01; 首…

@Transactional 注解下,事务失效的七种场景

文章目录 1、异常被捕获后没有抛出2、抛出非运行时异常3、方法内部直接调用4、新开启一个线程5、注解到private方法上6、数据库本身不支持7、事务传播属性设置错误 Transactional是一种基于注解管理事务的方式&#xff0c;spring通过动态代理的方式为目标方法实现事务管理的增强…

腾讯云服务器镜像操作系统大全_Linux_Windows清单

腾讯云CVM服务器的公共镜像是由腾讯云官方提供的镜像&#xff0c;公共镜像包含基础操作系统和腾讯云提供的初始化组件&#xff0c;公共镜像分为Windows和Linux两大类操作系统&#xff0c;如TencentOS Server、Windows Server、OpenCloudOS、CentOS Stream、CentOS、Ubuntu、Deb…

Python基础小项目

今天给大家写一期特别基础的Python小项目&#xff0c;欢迎大家支持&#xff0c;并给出自己的完善修改 &#xff08;因为我写的都是很基础的&#xff0c;运行速率不是很好的 目录 1. 地铁票价题目程序源码运行截图 2. 购物车题目程序源码运行截图 3. 名片管理器题目程序源码运行…

应用程序运行报错:First section must be [net] or [network]:No such file or directory

应用程序报错环境&#xff1a; 在linux下&#xff0c;调用darknet训练的模型&#xff0c;报错&#xff1a;First section must be [net] or [network]:No such file or directory&#xff0c;并提示&#xff1a;"./src/utils.c:256: error: Assertion 0 failed." 如…