目录
初始化配置使用Xshell连接
项目准备
docker-compose
Dockerfile
.dockerignore
在服务器中启动Docker项目
因为我比较喜欢用xshell来操作服务器,如果你是使用华为在线的CloudShell或其他方式,可以跳过第一步的连接操作。
在选择服务器的时候我选择了云耀云服务器L实例的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
然后下面我们来对这三个文件编码。
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 操作系统。
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镜像源进行下载和安装,同时禁用缓存。
__pycache__/*
*/__pycache__/*
dockerignore文件用于告诉Docker哪些文件或目录不需要被复制到Docker镜像中。
__pycache__/*表示__pycache__目录下的所有文件,以及*/__pycache__/*表示所有子目录中的__pycache__文件
这些都是存放Python解释器生成的字节码文件,因此我们不需要复制到镜像当中。
因为我购买的服务器是云耀云的Docker可视化Portainer,因此内部已经有docker的环境,不需要再自己进行部署了,非常的方便。
打开Xftp,将我们的项目copy进去。
在xshell进入我们项目的文件夹,执行docker-compse up,此时已经在下载镜像了,如需要让他在后台运行,则使用docker-compse up -d
构建完成之后可以使用dockers ps -a 查看我们的镜像
然后回到华为云的控制台,找到安全组,点击配置规则
添加我们项目配置的端口,这样才能通过ip访问到
测试一下,使用公网ip访问我们的项目,可以成功访问了
再测试一下我们的api接口,发送了一张图片,可以成功返回识别结果!
在项目运行了一天之后,查看了一下服务器的监控,哪怕是部署ai大模型这种高性能应用,云耀云服务器L实例的表现也是相当出色的。