一键部署目录结构

├── ai_deploy.sh 													# 安装脚本									
├── conf																	#配置文件
│   ├── boliving												#boliving配置文件
│   │   └── config.toml
│   ├── mysql														#mysql配置文件
│   │   └── my.cnf
│   ├── nginx														#nginx配置文件
│   │   └── conf.d
│   │       └── default.conf
│   └── redis														#redis配置文件
│       └── redis.conf
├── data																#容器映射数据目录
│   ├── mysql														#mysql容器映射数据目录
│   ├── nginx														#nginx映射目录
│   │   └── html											#前端资源映射目录
│   └── redis
├── docker-compose.yml									#docker-compose文件
├── dockerFile													#项目tar包文件
│   ├── ai											   		#算法tar包文件
│   │   ├── Dockerfile
│   │   ├── ai_platform.tar
│   │   └── entrypoint.sh
│   ├── jar													   #平台tar包文件
│   │   ├── .DS_Store
│   │   ├── Dockerfile
│   │   └── start.jar
│   └── mysql												   #MySQL数据填充
│       ├── .DS_Store
│       ├── Dockerfile
│       └── ai_algo_aat.sql
├── logs														   #日志文件夹
│   ├── boliving
│   ├── java
│   ├── mysql
│   └── nginx
├── other
│   ├── comm
│   ├── etcdocker
│   │   ├── daemon.json
│   │   └── key.json
│   ├── license											   #授权文件license文件
│   ├── models
│   └── sh													   #可执行脚本文件夹
│       ├── delLogs.sh								#删除日志脚本
│       ├── remain.sh									#删除图片脚本
│       └── remain.txt
└── tar												  			 #基础环境
    ├── ai_platform_v1.tar
    ├── boliving_1.0.0.03121.tar
    ├── mysql_8.0-oracle.tar
    ├── nginx_1.18-alpine.tar
    ├── openjdk_8-jre.tar
    └── redis_6.0.16.tar

第一步:安装 docker-compose(需联网)

#docker-compose -v  查看是否有docker-compose
#如果未安装,执行下面命令进行安装
apt-get install docker-compose

第二步:上传项目到服务器

上传 ai_deploy.zip 压缩包到/home/nvidia/目录下【统一目录放到该目录下,理论上可以放在任意目录下】

第三步:解压项目压缩包

cd /home/nvidia/
unzip ./ai_deploy.zip

第四步:添加默认使用GPU相关配置【如果不先进行此步骤,会导致模型开启失败报错】

📢注意:这一步很关键,如果不进行设置,将导致算法无法开启

Tip:如果这一步忘记了,按顺序执行以下命令进行重新部署:

docker rm -f $(docker ps -aq) #删除所有容器 docker rmi -f $(docker images -aq) #查询出所有的镜像id 进行递归批量容器命令

sh /home/nvidia/ai_deploy/ai_deploy.sh

第一步:

添加"default-runtime":"nvidia",/etc/docker/daemon.json,操作如下:

vim /etc/docker/daemon.json

{
        "default-runtime":"nvidia",#新增
        "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}
第二步:

重启docker服务

sudo systemctl restart docker.service

第五步:上传授权文件

上传授权文件[license.lic,publicCerts.keystore]到/home/nvida/ai_deploy/other/license目录下

生成license的项目地址:生成license授权文件项目

第六步:执行安装脚本

📢注意:

如果盒子是连的wifi,请先进行盒子的IP固定,否则会导致授权验证不通过

cd /home/nvidia/ai_deploy
sh ./ai_deploy.sh

脚本内容如下:

#!/bin/bash
  
echo  "## ------ 一键化部署【开始】 ------ ##"

echo  "## ------ 删除历史容器 ------ ##"
docker rm -f mysql
docker rm -f redis
docker rm -f boliving
docker rm -f nginx
docker rm -f ai_platform
docker rm -f ai_algo_aat

echo  "## ------ load 镜像包 ------ ##"
cd ./tar
docker load -i redis_6.0.16.tar
docker load -i boliving_1.0.0.03121.tar
docker load -i mysql_8.0-oracle.tar
docker load -i nginx_1.18-alpine.tar
docker load -i openjdk_8-jre.tar
docker load -i ai_platform_v1.tar
echo  "## ------ load 镜像包 完成 ------ ##"

查看运行情况

root@nx:~# docker ps
CONTAINER ID        IMAGE                  COMMAND                  CREATED              STATUS              PORTS               NAMES
7a24cc83fce7        aideploy_ai            "/bin/sh -c /ai/temp…"   About a minute ago   Up About a minute                       ai_platform
9ebab568ba1c        redis:6.0.16           "redis-server /etc/r…"   About a minute ago   Up About a minute                       redis
6115243348e9        aideploy_web           "java -Djava.securit…"   About a minute ago   Up About a minute                       ai_algo_aat
927e6adfcc99        boliving:1.0.0.03121   "/boliving/bin/boliv…"   About a minute ago   Up About a minute                       boliving
7e9f6be32b37        nginx:1.18-alpine      "/docker-entrypoint.…"   About a minute ago   Up About a minute                       nginx
96690d458d3f        mysql:8.0-oracle       "docker-entrypoint.s…"   About a minute ago   Up About a minute                       mysql
root@nx:~# 

查看数据库迁移情况

root@nx:/home/nvidia/ai_deploy# docker logs -f mysql 
#********
2022-04-28T10:08:35.632409Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2022-04-28T10:08:35.632479Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.28'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GP

出现Bind-address: '::' port: 33060,ready for connections. Version: '8.0.28'就表明数据库数据迁移成功。

第六步:进行静态资源迁移

根据算法的不同,进行算法图片、算法模型指定目录的迁移

算法图片:/data2/ai-algo-aat/upload/comm/

算法模型:/data2/ai-algo-aat/cache/{versionId}/models

第七步:新增开机自启动脚本

vim /etc/rc.local 
#新增以下内容
#!/bin/bash
sleep 1
cd /home/nvidia/ai_deploy/
sudo sh ai_deploy.sh
exit 0  

📢注意:

如果系统为Ubuntu18,该方法将不生效。操作方法如下:

ubuntu 18.04 不再使用 inited 管理系统,改用 systemd

第一步:
ln -fs /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service
第二步:
sudo echo "
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
" >> /etc/systemd/system/rc-local.service
第三步:
chmod +x /etc/rc.local

第八步:新增定时任务

root@nx:~# crontab -e
#添加图片清理脚本 一小时一次
0 */1 * * * sh /home/nvidia/ai_deploy/other/sh/remain.sh >> /home/nvidia/ai_deploy/other/sh/remain.txt
#添加日志清理脚本  每天23:30
30 23 * * * sh /home/nvidia/ai_deploy/other/sh/delLogs.sh >> /home/nvidia/ai_deploy/other/sh/delLogs.txt

更新项目

更新平台、算法或者是前端代码,只需要根据一键部署目录结构将对应的部署包放到指定的目录中,执行sh /home/nvidia/ai_deploy/ai_deploy.sh即可完成更新

其他:

清理docker容器

docker rm -f $(docker ps -aq) #删除所有容器
docker rmi -f $(docker images -aq) #查询出所有的镜像id   进行递归批量**容器命令**

算法迁移

#算法
algo
#算法数据库
algo_db
#算法数据库子表表
algo_db_sub
#算法模型
algo_version
#算法模型训练结果表
algo_version_result
#算法版本子表
algo_version_sub
algo_version_sub_result

卸载docker-compose

#apt方式安装
apt remove docker-compose
#二进制文件安装
sudo rm /usr/local/bin/docker-compose
文档更新时间: 2023-12-18 03:26   作者:JeffreyCheung