利用Docker部署程序

目录

一、安装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 &
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chengbo_eva

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值