一.安装docker程序
# 1、yum 包更新到最新
yum update
# 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4、安装docker,出现输入的界面都按y。下载比较慢,比较费时,耐心等待
yum install -y docker-ce
# 5、查看docker版本,验证是否验证成功
docker -v
docker的基础命令
下载镜像(:后面是版本号,如果不写,默认下载最新lastest):
● docker pull redis:5.0
查看下载的镜像:
● docker images
启动容器:
● docker run -it --name=mysql mysql:5.7 /bin/bash(交互式,创建后直接进入容器,退出后容器关闭)
● docker run -id --name=mysql mysql:5.7(后台运行)
-it方式会在创建容器后直接进入容器,一顿操作后exit退出时容器也会关闭。
-id方式会在后台启动容器,如果你想进入容器,需要配合另一个命令:
● docker exec -it mysql /bin/bash
docker容器的启动比较麻烦,更多细节后面安装过程中自行体会。
启动容器后会用到以下几个操作, 比如查看容器:
● docker ps -a
启动、停止、重启:
● docker start rabbitmq
● docker stop rabbitmq
● docker restart rabbitmq
停止容器后,才能删除容器(镜像就好比qq.exe,容器则是运行的qq程序,你卸载qq和删除qq.exe安装包无关)
● docker rm rabbitmq(具体名字根据自己的来)
如果想连带镜像也删了(多了i,盲猜是 remove images 的缩写):
● docker rmi rabbitmq(具体名字根据自己的来)
另外介绍几个批量操作的命令,后面你可能会需要:
启动docker
systemctl start docker
开机启动docker
systemctl enable docker
停止docker
systemctl stop docker
查看docker状态
systemctl status docker
docker中 启动所有的容器命令
docker start $(docker ps -a | awk ‘{ print $1}’ | tail -n +2)
docker中 关闭所有的容器命令
docker stop $(docker ps -a | awk ‘{ print $1}’ | tail -n +2)
docker中 删除所有的容器命令
docker rm $(docker ps -a | awk ‘{ print $1}’ | tail -n +2)
docker中 删除所有的镜像
docker rmi $(docker images | awk ‘{print $3}’ |tail -n +2)
docker的常用命令
# 启动docker
systemctl start docker
#停止docker
systemctl stop docker
# 查看docker状态
systemctl status docker
#查看下载的镜像:
docker images
# 查看容器:
docker ps -a
# 启动、停止、重启: 后面接容器名
docker start rabbitmq
docker stop rabbitmq
docker restart rabbitmq
# 停止容器后,才能删除容器(镜像就好比qq.exe,容器则是运行的qq程序,你卸载qq和删除qq.exe安装包无关)
docker rm rabbitmq(具体名字根据自己的来)
# 如果想连带镜像也删了(多了i,盲猜是 remove images 的缩写):
docker rmi rabbitmq(具体名字根据自己的来)
在使用腾讯云服务器的条件下,因为Docker在线安装镜像是从国外的DockerHub网站下载件,所以速度超级慢,所以我们要给Docker设置加速器。我们用的是腾讯云主机,当然设置腾讯云加速器是最快的。
打开/etc/docker/daemon.json文件,然后设置成如下内容:
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
重新启动Docker服务,加速器才能生效
service docker restart
1.安装mysql
利用刚才设置的加速器,我们可以在线安装MySQL镜像,这里我下载8.0.23版本的MySQL数据库
docker pull mysql:8.6.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的数据就不会丢失。
–net=host表示设置为host模式
-m 50om 表示内存大小
-v /root/mysql/data:/var/lib/mysql 路径映射
-v /root/mysq1/config:/etc/mysql/conf.d 配置文件映射
-e MYSQL_ROOT_PASSWORD=abc123456 设置特定参数
docker run -it -d --name mysql --net=host \
-m 50om -v /root/mysql/data:/var/lib/mysql \
-v /root/mysq1/config:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=abc123456 \
-e TZ=Asia/shanghai mysql:8.0.23
用Navicat连接linux端口部署的MySQL数据库,创建emos逻辑库,然后导入数据。
2.安装MongoDB
执行命令,下载最新版本的MongoDB镜像
docker pull mongo
创建/root/mongo/ mongod.conf配置文件,然后在文件中添加如下内容:
mkdir -p /root/mongo //创建root目录下的mongo文件夹
vim /root/mongo/mongod.conf //在该文件下方编辑mongod.conf文件
编辑mongod.conf文件的内容:(net: port前空三个字符)
bindIp: "0.0.0.0"允许远程访问,
authorization: enabled 通过用户名密码来访问
net:
port: 27017
bindIp: "0.0.0.0"
storage:
dbPath: "/etc/mongo/data"
security:
authorization: enabled
创建容器,为MongoDB分配50OM内存
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连接linux端口部署的Mongo数据库
3.安装Redis
执行命令,在线安装Redis镜像
docker pull redis:6.0.10
创建/root/redis/conf/redis.conf文件进行编辑,然后添加如下内容:
mkdir -p /root/redis/conf/
vim /root/redis/conf/redis.conf
redis.conf编辑内容为:
bind 0.0.0.0
protected-mode yesport 6379
tcp-backlog 511timeout 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
4.安装RabbitMQ
把镜像文件rabbitmq.tar.gz上传到云主机,然后导入Docker
docker load < rabbitmq.tar.gz
执行命令,创建RabbitMQ容器,分配300M内存
docker run --name rabbitmq -d -p 15672:15672 -p 5672:5672 rabbitmq:management
5.部署人脸识别程序
把人脸识别镜像文件face.tar.gz上传到云主机(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 &
#运行程序后别急着退出容器ps -a查询进程
ps -a
#退出容器
exit
二、打包Java项目
修改application.yml文件中的MySQL、MongoDB、Redis连接信息,把IP地址改成localhost
还有下面这些位置的IP地址也要改成localhost,签到照片临时存放地址需要改成Linux系统的某个路径,如:/root/emos/image
进行Idea将项目打包成jar包
三、部署Java项目
假如你是用JDK12开发的Emos项目,那么你部署的时候尽量选择这个JDK版本的Docker容器,你要先去DockerHub网站搜索相关的OpenJDK镜像文件。
用浏览器访问这个网址,https://hub.docker.com/_/openjdk?tab=tags在文本框中填写你要查找的OpenJDK版本
#粘贴使用在docker仓库找到的对应jdk版本的docker版本进行安装
docker pull openjdk:12.0.2-jdk-oraclelinux7
#创建新的镜像引用(修改一下镜像名为jdk12)
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容器,分配30OM内存
mkdir -p /root/emos/
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 &
三、安装Nginx服务器
因为域名只能绑定到云主机的80端口,所以我们要安装Nginx程序,开启80端口。将来通过这个Nginx程序,我们还可以为云主机设置SSL,开通HTTPS访问。
为yum扩展额外的安装源,这样才能用yum命令安装Nginx
rpm r-Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
#执行安装
yum install nginx -y
#启动Nginx
service nginx start
四、云主机
解压缩之后,找到其中的nginx目录,有两个文件,都需要上传到云主机的/etc/nginx/目录
编辑/etc/nginx/nginx.conf文件,添加SSL设置
http {
...
server{
#SSL访问端口号为443
listen 443 ssl;
#填写绑定证书的域名
server_name www.myxxx.cn;
#证书文件名称
ssl_certificate 1_www.myxxx.cn_bundle.crt;
#私钥文件名称
ssl_certificate_key 2_www.myxxx.cn.key;ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#请按照以下套件配置,配置加密套件,写法遵循openssl标准。
...........
#通配符
location / {
root html;
index index.html index.htm;
}
#域名加上相对地址/emos-wx-api可以进行转发http://localhost:8080/emos-wx-api
location /emos-wx-api {
proxy_pass http://localhost:8080/emos-wx-api;
}
location / emos-workflow {
proxy_pass http://localhost:9090/emos-workflow;
}
}
}
重新启动Nginx程序
service nginx restart
用浏览器访问注册的域名,协议名称必须是https
五、执行备案
…