mall在docker容器下部署涉及到MySQL、Redis、Nginx、RabbitMQ、MongoDB、Elasticsearch、Logstash、Kibana,以及Spring Boot应用部署。
本人事先已经拉取过镜像了,下文中就不进行镜像拉取展示了。
docker images 是列出docker镜像指令
一、 docker环境安装
1、安装yum-utils
yum install -y yum-utils device-mapper-persistent-data lvm2
2、为yum源添加docker仓库位置
3、安装docker
yum install docker-ce
4、启动docker
systemctl start docker
安装好docker环境后接着安装下面几个容器
本人事先拉取了所需镜像,后续操作不进行镜像拉取展示。
二、MySQL安装
1、拉取镜像
docker pull mysql:5.7
2、创建MySQL容器
docker run -p 3306:3306 --name mysql
-v /mydata/mysql/log:/var/log/mysql
-v /mydata/mysql/data:/var/lib/mysql
-v /mydata/mysql/conf:/etc/mysql
-e MYSQL_ROOT_PASSWORD=root
-d mysql:5.7
3、进入运行的MySQL容器(如果报错检查一下容器是否已经启动)
docker exec -it mysql /bin/bash
4、使用mysql命令打开客户端
mysql -uroot -proot --default-character-set=utf8
5、创建mall数据库
create database mall character set utf8;
6、安装上传下载插件,将mall.sql上传到linux服务器上
yum -y install lrzsz
找到文件用finalShell工具直接拖到对应目录
上传上来之后ls查看文件是否上传上来了(先切换到mydata目录)
7、将mall.sql文件拷贝到mysql容器的/目录下
docker cp /mydata/mall.sql mysql:/
8、将sql文件导入到数据库(在mysql客户端下操作)
use mall;
source /mall.sql;
9、创建一个reader账号,密码123456并修改权限,使得任何ip都能访问
grant all privileges on . to ‘reader’ @’%’ identified by ‘123456’;
三、Redis安装
1、拉取Redis5.0的docker继续
docker pull redis:5
2、创建Redis容器
docker run -p 6379:6379 --name redis
-v /mydata/redis/data:/data
-d redis:5 redis-server --appendonly yes
3、进入容器使用redis-cli命令进行连接
docker exec -it redis redis-cli
四、Nginx安装
1、拉取Nginx1.10的docker镜像
docker pull nginx:1.10
2、先创建容器并运行一次容器(为了拷贝配置文件)
docker run -p 80:80 --name nginx
-v /mydata/nginx/html:/usr/share/nginx/html
-v /mydata/nginx/logs:/var/log/nginx
-d nginx:1.10
3、将容器内的配置文件拷贝到指定目录
docker container cp nginx:/etc/nginx /mydata/nginx/
4、修改文件名称(必须在mydata/nginx目录下修改,否则后续Nginx容器会因为找不到配置文件而启动不成功)
mv nginx conf
下图已经把nginx文件名修改为conf
5、终止并删除容器
docker stop nginx
docker rm nginx
6、使用下面命令重新创建并启动nginx容器
docker run -p 80:80 --name nginx
-v /mydata/nginx/html:/usr/share/nginx/html
-v /mydata/nginx/logs:/var/log/nginx
-v /mydata/nginx/conf:/etc/nginx
-d nginx:1.10
五、RabbitMQ安装
1、拉取rabbitmq3.7.15的docker镜像
docker pull rabbitmq:3.7.15
2、创建并启动rabbitmq容器
docker run -p 5672:5672 -p 15672:15672 --name rabbitmq
-d rabbitmq:3.7.15
3、进入容器并开启管理功能
docker exec -it rabbitmq /bin/bash
rabbitmq-plugins enable rabbitmq_management
4、开启防火墙
firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --reload
5、用浏览器访问查看是否安装成功:http://192.168.100.135:15672
6、输入账号密码并登录:guest(账号密码一样)
7、创建账号并设置其角色为管理员:mall(账号密码一样)
8、创建一个新的虚拟host为:/mall
8、点击mall用户进入用户配置页面
9、给mall用户配置该虚拟host的权限
六、Elasticsearch安装
1、拉取Elasticsearch7.6.2的docker镜像
docker pull elasticsearch:7.6.2
2、修改虚拟内存区域大小,否则会因为过小而无法启动
sysctl -w vm.max_map_count=262144
3、创建并启动elasticsearch容器
docker run -p 9200:9200 -p 9300:9300 --name elasticsearch
-e “discovery.type=single-node”
-e “cluster.name=elasticsearch”
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data
-d elasticsearch:7.6.2
4、启动时会发现/usr/share/elasticsearch/data目录没有访问权限,只需要修改/mydata/elasticsearch/data目录的权限,再重新启动即可;
chmod 777 /mydata/elasticsearch/data/
5、安装中文分词器IKAnalyzer,并重新启动(先进入容器再安装)
docker exec -it elasticsearch /bin/bash
如果进入容器报错的话先重启docker容器服务
systemctl start docker
启动Elasticsearch容器
上述完成之后安装分词器
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
6、开启防火墙
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --reload
7、浏览器访问返回版本信息http://192.168.100.135:9200/
七、Logstash安装
1、拉取Logstash7.6.2的docker镜像
docker pull logstash:7.6.2
2、修改Logstash的配置文件logstash.conf中output节点下的Elasticsearch连接地址为es:9200,配置文件地址如下,用IDEA打开修改
3、创建/mydata/logstash目录,并将Logstash的配置文件logstash.conf拷贝到该目录;
mkdir /mydata/logstash
用Shell工具连接后直接拖到对应目录下
4、创建并启动容器
docker run --name logstash -p 4560:4560 -p 4561:4561 -p 4562:4562 -p 4563:4563
–link elasticsearch:es
-v /mydata/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
-d logstash:7.6.2
5、进入容器然后按照json_lines插件
[root@ywx mydata]# docker exec -it logstash /bin/bash
bash-4.2$ logstash-plugin install logstash-codec-json_lines
八、Kibana安装
1、拉取Kibana7.6.2的docker镜像
docker pull kibana:7.6.2
2、创建并启动Kibana容器
docker run --name kibana -p 5601:5601
–link elasticsearch:es
-e “elasticsearch.hosts=http://es:9200”
-d kibana:7.6.2
3、开启防火墙
firewall-cmd --zone=public --add-port=5601/tcp --permanent
firewall-cmd --reload
4、浏览器进行访问测试http://192.168.100.135:5601/
九、MongoDB安装
1、拉取MongoDB4.2.5的docker镜像
docker pull mongo:4.2.5
2、创建并启动容器
docker run -p 27017:27017 --name mongo
-v /mydata/mongo/db:/data/db
-d mongo:4.2.5
Docker全部环境安装完成
所有在运行的容器
十、下面是SpringBoot应用部署
1、用IDEA打开下面这个项目
2、修改项目根目录下的pom.xml中的docker.host属性(修改成自己linux服务器的地址)
3、如果项目根目录的pom.mxl中docker-maven-plugin的节点被注释掉了就打开注释,使项目在打包时直接构建Docker镜像;
4、改项目文件的ip地址为自己linux服务器的地址
下面以mall-admin这里做演示,其他文件修改ip地址省略,自行修改为对应服务器地址即可
上述操作完成后进行打包
等待打包即可,打包完成控制台显示如下图
错误解决:
1、出现下面错误去pom.xml文件把
注释掉
2、如果出现以下错误表示对应端口未开启
解决方法:
编辑/usr/lib/systemd/system/docker.service文件,
将原来的删除,添加下图的内容然后保存
修改完后执行下面命令
Systemctl daemon-reload
Systemctl restart docker
上面是重启docker命令,执行上面的命令后需要自己手动去把容器启动一下,这里省略
开启防火墙,添加2375端口
[root@node1 ~]# systemctl start firewalld
[root@node1 ~]# firewall-cmd --zone=public --add-port=2375/tcp --permanent
[root@node1 ~]# firewall-cmd --reload
然后去查看端口起来没有
[root@ywx ~]# netstat -tnl |grep 2375
上面操作完成后重新打包即可
十一、部署
打包好后会有下面三个镜像
1、部署mall-admin
docker run -p 8080:8080 --name mall-admin
–link mysql:db
–link redis:redis
-v /etc/localtime:/etc/localtime
-v /mydata/app/admin/logs:/var/logs
-d mall/mall-admin:1.0-SNAPSHOT
2、部署mall-search
docker run -p 8081:8081 --name mall-search
–link elasticsearch:es
–link mysql:db
-v /etc/localtime:/etc/localtime
-v /mydata/app/search/logs:/var/logs
-d mall/mall-search:1.0-SNAPSHOT
3、部署mall-port
docker run -p 8085:8085 --name mall-portal
–link mysql:db
–link redis:redis
–link mongo:mongo
–link rabbitmq:rabbit
-v /etc/localtime:/etc/localtime
-v /mydata/app/portal/logs:/var/logs
-d mall/mall-portal:1.0-SNAPSHOT
上面三个容器创号后检查一下是否已经起来
4、开启防火墙
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=8081/tcp --permanent
firewall-cmd --zone=public --add-port=8085/tcp --permanent
firewall-cmd –reload
5、访问端口进行测试
• mall-admin的api接口文档地址: http://192.168.100.135:8080/swagger-ui.html
• mall-search的api接口文档地址:http://192.168.100.135:8081/swagger-ui.html
• mall-portal的api接口文档地址:http://192.168.100.135:8085/swagger-ui.html
到此完成部署!!!!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)