一键部署目录结构
├── 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