目录
一、安装Docker程序
二、安装MySQL
三、安装MongoDB
四、安装Redis
五、安装RabbitMQ
六、部署人脸识别程序
一、部署工作流项目
二、打包Java项目
三、部署Java项目
一、安装Docker程序
这节课我们要利用Docker环境部署很多东西,有数据库、人脸识别程序、Emos项目等等,所以首先要安装Docker环境。
#安装Docker
yum install docker -y
#启动Docker服务
service docker start
因为Docker在线安装镜像是从国外的DockerHub网站下载文件,所以速度超级慢,所以我们要给Docker设置加速器。我们用的是腾讯云主机,当然设置腾讯云加速器是最快的。
打开 /etc/docker/daemon.json 文件,然后设置成如下内容:
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
重新启动Docker服务,加速器才能生效
service docker restart
二、安装MySQL
利用刚才设置的加速器,我们可以在线安装MySQL镜像,这里我下载8.0.23版本的MySQL数据库
docker pull mysql:8.0.23
创建容器的时候,我们需要把MySQL容器内的数据目录映射到CentOS系统上面。如果MySQL容器挂掉了,数据库文件不会丢失。我们新建一个MySQL容器,挂载上这个数据目录就又能正常使用MySQL了。
以前我说过Docker会给每个容器创建一个 虚拟的网卡 ,然后分配一个Docker 内网IP地址 。假设A容器部署了MySQL,B容器中的Java程序想要访问A容器的MySQL,JDBC路径就要写A容器的Docker内网IP地址,略显麻烦。
这次部署项目,我打算把容器设置成 host模式 ,就是不让Docker为容器虚拟网卡,Docker容器直接使用CentOS的网卡。A容器和B容器中使用的都是CentOS的网卡,所以A容器中localhost代表CentOS,B容器中的localhost也代表CentOS,两个容器相互访问,URL地址写localhost即可。
例如B容器中JDBC路径的host写localhost,就能访问到A容器里面的MySQL。这样我们部署的若干容器,相互访问就简单多了。MySQL容器我分配内存空间是500M,如果将来觉得不够用,删除容器,再创建新容器的时候分配更大的内存。而且只要挂载上那些文件目录,MySQL的数据就不会丢失。
docker run -it -d --name mysql --net=host \
-m 500m -v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/config:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=abc123456 \
-e TZ=Asia/Shanghai mysql:8.0.23
用Navicat连接MySQL数据库,创建emos逻辑库,然后导入数据。
三、安装MongoDB
执行命令,下载最新版本的MongoDB镜像
docker pull mongo
创建 /root/mongo/mongod.conf 文件,然后在文件中添加如下内容:
mkdir -p /root/mongo
vim /root/mongo/mongod.conf
net:
port: 27017
bindIp: "0.0.0.0"
storage:
dbPath: "/data/db"
security:
authorization: enabled
// 必须3个空格。
创建容器,为MongoDB分配500M内存
docker run -it -d --name mongo --net=host \
-v /root/mongo:/etc/mongo -m 500m \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=abc123456 \
mongo --config /etc/mongo/mongod.conf
用Navicat连接MongoDB,检测是否可用。
四、安装Redis
执行命令,在线安装Redis镜像
docker pull redis:6.0.10
创建 /root/redis/conf/redis.conf 文件,然后添加如下内容:
mkdir -p /root/redis/conf/
vim /root/redis/conf/redis.conf
bind 0.0.0.0
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 0
loglevel notice
logfile ""
databases 4
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
requirepass abc123456
执行命令,创建Redis容器,分配300M内存
docker run -it -d --name redis -m 300m --net=host \
-v /root/redis/conf:/usr/local/etc/redis redis:6.0.10 \
redis-server /usr/local/etc/redis/redis.conf
五、安装RabbitMQ
把镜像上传到云主机,然后导入Docker
docker load < rabbitmq.tar.gz
执行命令,创建RabbitMQ容器,分配300M内存
docker run -it -d --name mq -m 300m --net=host rabbitmq
六、部署人脸识别程序
把人脸识别镜像文件上传到云主机(2M带宽大概需要40分钟,有断点续传功能),导入Docker环境
docker load < face.tar.gz
把demo.tar文件上传到Linux根目录,然后解压缩
tar -xvf demo.tar
执行命令,创建人脸识别容器,分配1GB内存
docker run -d -it -v /demo:/demo --net=host -m 1g --name node face
#进入到node容器
docker exec -it node bash
cd /demo
#把Python程序挂起到后台运行
nohup python3 -c "from app import app;" > log.out 2>&1 &
一、部署工作流项目
修改 emos-workflow.jar 文件中的MySQL和Redis连接信息,把IP地址改成 localhost ,把这个JAR文件放入云主机的 /root/workflow 目录。
执行命令,下载JDK15.0.2版本的镜像
docker pull openjdk:15.0.2-oraclelinux7
# 为镜像创建一个新的引用名称
docker tag openjdk:15.0.2-oraclelinux7 jdk15
# 删除原有引用名
docker rmi openjdk:15.0.2-oraclelinux7
执行命令创建容器,分配200M内存
docker run -it -d --name=workflow --net=host -m 200m \
-v /root/workflow:/root/workflow jdk15
#进入Java容器
docker exec -it workflow bash
cd /root/workflow
#运行工作流项目
nohup java -jar emos-workflow.jar >> out.log 2>&1 &
二、打包Java项目
修改 application.yml 文件中的MySQL、MongoDB、Redis连接信息,把IP地址改成 localhost 还有下面这些位置的IP地址也要改成 localhost ,签到照片临时存放地址需要改成Linux系统的某个路径。
image-folder 签到提交照片路径。
打包项目过程:
IDEA右侧Maven > Toggle Skip Tests Mode(取消执行测试用例) > 右键clean 选择Run Maven Build (清理原来打包的结果) > 右键 package 选择Run Maven Build > target 目录会出现 SNAPSHOT.jar 文件 。
三、部署Java项目
假如你是用JDK12开发的Emos项目,那么你部署的时候尽量选择这个JDK版本的Docker容器。所以你要先去DockerHub网站搜索相关的OpenJDK镜像文件。
用浏览器访问这个网址,https://hub.docker.com/_/openjdk?tab=tags
在文本框中填写你要查找的OpenJDK版本
找到你需要的JDK镜像,右侧有下载命令,直接复制到命令执行即可。注意,镜像体积200M上下的才是正常的镜像,如果镜像体积达到几个GB,那种镜像不要下载。
docker pull openjdk:12.0.2-jdk-oraclelinux7
#创建新的镜像引用
docker tag openjdk:12.0.2-jdk-oraclelinux7 jdk12
#删除原有镜像引用
docker rmi openjdk:12.0.2-jdk-oraclelinux7
因为OpenJDK没有1.8版本,所以使用JDK1.8开发的同学,需要下载Oracle官方的1.8版本镜像,命令如下:
docker pull kdvolder/jdk8
在云主机的 /root/emos 目录中放入 emos-wx-api.jar 文件,然后进入Java容器运行项目
创建Java容器,分配300M内存
docker run -it -d --name=emos-wx-api --net=host -m 300m \
-v /root/emos:/root/emos jdk12
#进入Java容器
docker exec -it emos-wx-api bash
cd /root/emos
#运行工作流项目
nohup java -jar emos-wx-api.jar >> out.log 2>&1 &