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

news/2024/7/11 1:37:19 标签: 服务器, docker, YOLO

目录

初始化配置使用Xshell连接

项目准备

docker-compose-toc" style="margin-left:80px;">docker-compose

Dockerfile

dockerignore-toc" style="margin-left:80px;">.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" style="text-align:justify;">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" style="text-align:justify;">.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.niftyadmin.cn/n/5003625.html

相关文章

[.NET/WPF] 设置按钮, 以及其他任何包含边框的控件的圆角

在 WPF 中, 按钮包含一个 “边框”, 很多时候需要设置按钮的圆角, 但是按钮并没有提供一个属性用来设置边框圆角. 下面以按钮为例, 列举几种常用的设置圆角的方式. 通过附加属性 定义一个附加属性, 然后在各个地方就能直接方便的使用了, 下面是实际使用方式: <Button ut…

自动计算比例 计算属性 computed @input=“rate“

<el-col :span"12"><el-form-item label"当年累计实收租金:" prop"cumulativeRent"><el-inputv-model"createForm.cumulativeRent"input"rate"clearable:disabled"value 2"><template slot…

tf和pytorch每轮epoch显示输出的auc是如何计算的

tf和pytorch每轮epoch显示输出的auc是如何计算的&#xff1f; tf的计算 近似 ROC 或 PR 曲线的 AUC&#xff08;曲线下面积&#xff09;。 tf1 通过计算真阳性&#xff0c;假阳性&#xff0c;假阴性&#xff0c;真阴性值的计算策略。 tensorflow AUC & streaming_auc_我…

【数据结构与算法】十大经典排序算法

文章目录 前言一、常见十大排序算法总结1、名词解释2、时间复杂度 二、排序算法与C语言实现1、冒泡排序2、选择排序3、插入排序4、希尔排序5、归并排序6、快速排序7、堆排序8、计数排序9、桶排序10、基数排序 总结 前言 排序算法是《数据结构与算法》中最基本的算法之一。 排序…

渗透测试漏洞原理之---【不安全的反序列化】

文章目录 1、序列化与反序列化1.1、引入1.2、序列化实例1.2.1、定义一个类1.2.2、创建 对象1.2.3、反序列化1.2.4、对象注入 2、漏洞何在2.1、漏洞触发2.1.2、定义一个类2.1.3、定义一个对象2.1.3、反序列化执行代码 2.2 为什么会这样 3、反序列化漏洞攻防3.1、PHP反序列化实例…

二进制安全虚拟机Protostar靶场(2)基础知识讲解,栈溢出覆盖变量 Stack One,Stack Two

前言 Protostar靶场的安装和一些二进制安全的基础介绍在前文已经介绍过了&#xff0c;这里是文章链接 https://blog.csdn.net/qq_45894840/article/details/129490504?spm1001.2014.3001.5501什么是缓冲区溢出 当系统向缓冲区写入的数据多于它可以容纳的数据时&#xff0c;…

在Windows下设置将EXE开机自启动

在Windows下设置将EXE开机自启动&#xff0c;有多种方法。以下是两种常用的方法&#xff1a; 方法一&#xff1a;通过注册表 打开“运行”&#xff08;快捷键&#xff1a;Win R&#xff09;&#xff0c;输入&#xff1a;reg add HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windo…

在MySQL中查看数据库和表的数据大小

在MySQL中查看数据库和表的数据大小 在管理和维护MySQL数据库时&#xff0c;了解数据库和表的数据大小是非常重要的。这可以帮助您监控数据库的增长、优化性能以及规划存储需求。本博客将介绍如何使用SQL查询来查看MySQL数据库和表的数据大小。 查看MySQL数据库的总数据大小 …