华为云云服务器评测|使用Docker可视化Portainer部署Yolov5项目进行AI识别

news2024/11/27 6:40:24

目录

初始化配置使用Xshell连接

项目准备

docker-compose

Dockerfile

.dockerignore

在服务器中启动Docker项目

初始化配置使用Xshell连接

因为我比较喜欢用xshell来操作服务器,如果你是使用华为在线的CloudShell或其他方式,可以跳过第一步的连接操作。

在选择服务器的时候选择Docker可视化Portainer,里面已经部署好我们需要的docker环境了。

首先,服务器购买成功后,第一步先找到我们的控制台,点击接下来要使用的服务器,点击服务器昵称,进入到基本信息详情页,然后在右上角更多的下拉框中,点击重置密码。

在弹出来的窗口中输入我们要设置的密码,记住这个秘密,待会要用到。

输入完成之后,选择验证方式,填写验证码,点击确认,就完成了修改密码操作。

然后点击弹性网卡,复制下面的弹性公网IP地址

或者回到我们的控制台中,鼠标停留在ip地址中也是会弹出提示框来查看IP地址的。

打开xshell,将上面的IP地址填到主机号中,点击确认,然后会弹出一个身份验证,填写我们刚刚重置密码中输入的密码,此时就已经连接成功了。

项目准备

因为本章主题是将YOLO的Ai项目使用docker部署在服务器运行,所以前面的项目如何搭建我们就不细说了,只说明docker配置部分。

先来简单的回顾一下前面的项目。

在第一期博客中,我们安装了必要的系统依赖,拉取yolov5源代码,并且训练出了一个.pt权重文件。

博客链接:https://blog.csdn.net/weixin_65243968/article/details/127189585

第二期博客中,我们使用训练好的权重文件,在本地搭建了一个识别的web与api接口。

博客链接:yolov5模型部署到web端,识别返回json格式文件_yolov5部署到web_爱吃香蕉的阿豪的博客-CSDN博客

在以上步骤都完成之后,我们把项目放到一个app文件夹中,然后创建docker-compose与dockerfile和一个.dockerignore

然后下面我们来对这三个文件编码。

docker-compose

version: '1'
services:
  core-api:
    build:
      context: .
      dockerfile: ./Dockerfile
    command: python server.py --host 0.0.0.0
    restart: always
    volumes:
      - "./apps:/apps"
    ports:
      - 8005:8005
    environment:
      - TZ=Asia/Guangzhou
    deploy: 
      resources:
        limits:
          cpus: '4'
          memory: 20000M
    platform: "linux/amd64"

在这个docker-compose中

Version是指版本号

services 定义了要创建的服务列表

core-api 是服务的名称,可以根据需要自定义。

build 指定了构建上下文和 Dockerfile 的位置。

command 指定了启动容器时要执行的命令,将主机地址设置为 0.0.0.0,使得容器可以接收来自任何网络接口的请求。

Restart 是指容器在退出时自动重启

Volumes:定义容器与主机之间的数据卷映射关系

Ports:将容器内的端口 8005 映射到主机的端口 8005,以便可以通过主机的端口访问容器内的服务。

- TZ=Asia/Shanghai:设置时区为上海(Asia/Shanghai)

cpus: '4':指定容器可以使用的最大 CPU 核心数为 4。

memory: 20000M:指定容器可以使用的最大内存为 2GB。

platform: "linux/amd64":指定了平台映像的类型为 Linux/AMD64。这意味着生成的容器镜像将基于 x86_64 架构的 Linux 操作系统。

Dockerfile

FROM python:3.8.6-buster  AS build
WORKDIR /apps
COPY ./apps ./
RUN apt-get update && apt-get install -y \
    libgl1-mesa-glx
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple --no-cache-dir 

在file文件中,首先指定基础镜像为python:3.8.6-buster

将工作目录设置为apps,然后通过命令COPY将我们的项目copy进去

在容器中执行apt-get命令来更新软件包列表并安装libgl1-mesa-glx软件包。

最后在容器中执行pip命令来安装requirements.txt文件中指定的依赖包,并通过清华大学的PyPI镜像源进行下载和安装,同时禁用缓存。

.dockerignore

__pycache__/*

*/__pycache__/*

dockerignore文件用于告诉Docker哪些文件或目录不需要被复制到Docker镜像中。

__pycache__/*表示__pycache__目录下的所有文件,以及*/__pycache__/*表示所有子目录中的__pycache__文件

这些都是存放Python解释器生成的字节码文件,因此我们不需要复制到镜像当中。

在服务器中启动Docker项目

因为我购买的服务器是云耀云的Docker可视化Portainer,因此内部已经有docker的环境,不需要再自己进行部署了,非常的方便。

打开Xftp,将我们的项目copy进去。

在xshell进入我们项目的文件夹,执行docker-compse up,此时已经在下载镜像了,如需要让他在后台运行,则使用docker-compse up -d

构建完成之后可以使用dockers ps -a 查看我们的镜像

然后回到华为云的控制台,找到安全组,点击配置规则

添加我们项目配置的端口,这样才能通过ip访问到

测试一下,使用公网ip访问我们的项目,可以成功访问了

再测试一下我们的api接口,发送了一张图片,可以成功返回识别结果!

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

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

相关文章

【Redis专题】Redis持久化、主从与哨兵架构详解

目录 前言课程目录一、Redis持久化1.1 RDB快照(Snapshot):二进制文件基本介绍开启/关闭方式触发方式bgsave的写时复制(COW,Copy On Write)机制优缺点 1.2 AOF(append-only file)&…

Git—版本控制系统

git版本控制系统 1、什么是版本控制2、常见的版本控制工具3、版本控制分类3.1、本地版本控制3.2、集中版本控制 SVN3.3、分布式版本控制 Git 4、Git与SVN的主要区别5、Git环境配置6、启动Git7、常用的Linux命令8、Git配置9、设置用户名与邮箱(用户标识,必…

数学建模--逻辑回归算法的Python实现

首先感谢CSDN上发布吴恩达的机器学习逻辑回归算法任务的各位大佬. 通过大佬的讲解和代码才勉强学会. 这篇文章也就是简单记录一下过程和代码. CSDN上写有关这类文章的大佬有很多,大家都可以多看一看学习学习. 机器学习方面主要还是过程和方法. 这篇文章只完成了线性可分方面的任…

Mac Homebrew中常用的 Brew 命令

Mac 中常用的 Brew 命令集 Brew(Homebrew)是一个强大的包管理器,用于在 macOS 上安装、更新和管理各种软件包。它使得在 Mac 上安装开发工具、应用程序和库变得轻松和便捷。本博客将介绍一些在 Mac 中常用的 Brew 命令,以帮助您更…

SpringMVC_SSM整合

一、回顾SpringMVC访问接口流程 1.容器加载分析 容器分析 手动注册WebApplicationContext public class ServletConfig extends AbstractDispatcherServletInitializer {Overrideprotected WebApplicationContext createServletApplicationContext() {//获取SpringMVC容器An…

UDP的可靠性传输

UDP系列文章目录 第一章 UDP的可靠性传输-理论篇(一) 第二章 UDP的可靠性传输-理论篇(二) 文章目录 UDP系列文章目录前言1.TCP 和UDP格式对比2.UDP分片原理3.UDP 传输层应该注意问题4.MTU5.UDP 分片机制设计重点 一、ARQ协议什么…

华为OD机考算法题:食堂供餐

目录 题目部分 解析与思路 代码实现 题目部分 题目食堂供餐题目说明某公司员工食堂以盒饭方式供餐。为将员工取餐排队时间降低为0,食堂的供餐速度必须要足够快。现在需要根据以往员工取餐的统计信息,计算出一个刚好能达成排队时间为0的最低供餐速度。…

PPO算法

PPO算法 全称Proximal Policy Optimization,是TRPO(Trust Region Policy Optimization)算法的继承与简化,大大降低了实现难度。原论文 算法大致流程 首先,使用已有的策略采样 N N N条轨迹,使用这些轨迹上的数据估计优势函数 A ^ …

算法做题记录

一、递推 95.费解的开关 #include<iostream> #include<cstring> using namespace std;const int N 8;char a[N][N],s[N][N]; int T; int ans20,cnt; int dir[5][2]{1,0,-1,0,0,1,0,-1,0,0};void turn(int x,int y) {for(int i0;i<5;i){int xx xdir[i][0];in…

数学建模--Topsis评价方法的Python实现

目录 1.算法流程简介 2.算法核心代码 3.算法效果展示 1.算法流程简介 """ TOPSIS(综合评价方法):主要是根据根据各测评对象与理想目标的接近程度进行排序. 然后在现有研究对象中进行相对优劣评价。 其基本原理就是求解计算各评价对象与最优解和最劣解的距离…

文字验证码:简单有效的账号安全守卫!

前言 文字验证码不仅是一种简单易懂的验证方式&#xff0c;同时也是保护您的账号安全的重要工具。通过输入正确的文字组合&#xff0c;您可以有效地确认自己的身份&#xff0c;确保只有真正的用户才能访问您的账号。 HTML代码 <script src"https://cdn6.kgcaptcha.…

rust编译出错:error: failed to run custom build command for `ring v0.16.20`

安装 Visual Studio&#xff0c;确保选择 —.NET 桌面开发、使用 C 的桌面开发和通用 Windows 平台开发。显示已安装的工具链rustup show。然后通过运行更改和设置工具链rustup default stable-x86_64-pc-windows-msvc。 另外是想用clion进行调试rust 需要你按下面配置即可解…

【Spring MVC】统一功能处理

一、登录验证 登录验证通过拦截器实现&#xff0c;拦截器就是在用户访问服务器时&#xff0c;预先拦截检查一下用户的访问请求。 没有拦截器时&#xff0c;用户访问服务器的流程是&#xff1a;用户–>controller–>service–>Mapper。有拦截器时&#xff0c;用户访问…

自旋锁和读写锁

目录 一、自旋锁 1.自旋锁和挂起等待锁 2.自旋锁的接口 二、读写锁 1.读者写者模型与读写锁 2.读写锁接口 3.加锁的原理 4.读写优先级 一、自旋锁 1.自旋锁和挂起等待锁 互斥锁的类型有很多&#xff0c;我们之前使用的锁实际上是互斥锁中的挂起等待锁。互斥锁比较有代…

JMeter(三十九):selenium怪异的UI自动化测试组合

文章目录 一、背景二、JMeter+selenium使用过程三、总结一、背景 题主多年前在某社区看到有人使用jmeter+selenium做UI自动化测试的时候,感觉很是诧异、怪异,为啥?众所周知在python/java+selenium+testng/pytest这样的组合框架下,为啥要选择jmeter这个东西[本身定位是接口测…

基于微信小程序的智能垃圾分类回收系统,附源码、教程

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 1 简介 视频演示地址&#xff1a; 基于微信小程序的智能垃圾分类回收系统&#xff0c;可作为毕业设计 小…

《C++ Primer》第2章 变量(一)

参考资料&#xff1a; 《C Primer》第5版《C Primer 习题集》第5版 2.1 基本内置类型&#xff08;P30&#xff09; C 定义的基本类型包括算术类型&#xff08;arithmetic type&#xff09;和空类型&#xff08;void&#xff09;&#xff0c;其中算术类型包括字符、整型、布尔…

postgresql-类型转换函数

postgresql-类型转换函数 简介CAST 函数to_date函数to_timestampto_charto_number隐式类型转换 简介 类型转换函数用于将数据从一种类型转换为另一种类型。 CAST 函数 CAST ( expr AS data_type )函数用于将 expr 转换为 data_type 数据类型&#xff1b;PostgreSQL 类型转 换…

《86盒应用于家居中控》——实现智能家居的灵动掌控

近年来&#xff0c;智能家居产品受到越来越多消费者的关注&#xff0c;其便捷、舒适的生活方式让人们对未来生活充满期待。作为智能家居方案领域的方案商&#xff0c;启明智显生产设计的86盒凭借出色的性能和良好的用户体验&#xff0c;成功应用于家居中控系统&#xff0c;让家…

Gof23设计模式之策略模式

1.概述 该模式定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以相互替换&#xff0c;且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式&#xff0c;它通过对算法进行封装&#xff0c;把使用算法的责任和算法的实现分割开来&#xff0c;…