溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Spring Boot 實(shí)戰(zhàn)項(xiàng)目 mall 在 Linux 環(huán)境下的部署(基于 Docker 容器)

發(fā)布時(shí)間:2020-07-03 09:06:03 來(lái)源:網(wǎng)絡(luò) 閱讀:485 作者:kukelook 欄目:編程語(yǔ)言

摘要
本文主要以圖文的形式講解mall在Linux環(huán)境下的部署,涉及在Docker容器中安裝Mysql、Redis、Nginx、RabbitMQ、Elasticsearch、Mongodb,以及SpringBoot應(yīng)用部署,基于CenterOS7.6。

Docker環(huán)境安裝

安裝yum-utils:

yum install -y yum-utils device-mapper-persistent-data lvm2
復(fù)制代碼
為yum源添加docker倉(cāng)庫(kù)位置:

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
復(fù)制代碼
安裝docker:

yum install docker-ce
復(fù)制代碼
啟動(dòng)docker:

systemctl start docker
復(fù)制代碼Mysql安裝

下載mysql5.7的docker鏡像:

docker pull mysql:5.7
復(fù)制代碼
使用docker命令啟動(dòng):

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
復(fù)制代碼
參數(shù)說(shuō)明

-p 3306:3306:將容器的3306端口映射到主機(jī)的3306端口
-v /mydata/mysql/conf:/etc/mysql:將配置文件夾掛在到主機(jī)
-v /mydata/mysql/log:/var/log/mysql:將日志文件夾掛載到主機(jī)
-v /mydata/mysql/data:/var/lib/mysql/:將數(shù)據(jù)文件夾掛載到主機(jī)
-e MYSQL_ROOT_PASSWORD=root:初始化root用戶的密碼

進(jìn)入運(yùn)行mysql的docker容器:

docker exec -it mysql /bin/bash
復(fù)制代碼
使用mysql命令打開(kāi)客戶端:

mysql -uroot -proot --default-character-set=utf8
復(fù)制代碼
創(chuàng)建mall數(shù)據(jù)庫(kù):

create database mall character set utf8
復(fù)制代碼
安裝上傳下載插件,并將docment/sql/mall.sql上傳到Linux服務(wù)器上:

yum -y install lrzsz
復(fù)制代碼
將mall.sql文件拷貝到mysql容器的/目錄下:

docker cp /mydata/mall.sql mysql:/
復(fù)制代碼
將sql文件導(dǎo)入到數(shù)據(jù)庫(kù):

use mall;
source /mall.sql;
復(fù)制代碼
創(chuàng)建一個(gè)reader帳號(hào)并修改權(quán)限,使得任何ip都能訪問(wèn):

grant all privileges on . to 'reader' @'%' identified by '123456';
復(fù)制代碼Redis安裝

下載redis3.2的docker鏡像:

docker pull redis:3.2
復(fù)制代碼
使用docker命令啟動(dòng):

docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-d redis:3.2 redis-server --appendonly yes
復(fù)制代碼
進(jìn)入redis容器使用redis-cli命令進(jìn)行連接:

docker exec -it redis redis-cli
復(fù)制代碼
Spring Boot 實(shí)戰(zhàn)項(xiàng)目 mall 在 Linux 環(huán)境下的部署(基于 Docker 容器)

Nginx安裝

下載nginx1.10的docker鏡像:
docker pull nginx:1.10
復(fù)制代碼從容器中拷貝nginx配置

先運(yùn)行一次容器(為了拷貝配置文件):

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
復(fù)制代碼
將容器內(nèi)的配置文件拷貝到指定目錄:

docker container cp nginx:/etc/nginx /mydata/nginx/
復(fù)制代碼
修改文件名稱:

mv nginx conf
復(fù)制代碼
終止并刪除容器:

docker stop nginx
docker rm nginx
復(fù)制代碼使用docker命令啟動(dòng):
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
復(fù)制代碼RabbitMQ安裝

下載rabbitmq3.7.15的docker鏡像:

docker pull rabbitmq:3.7.15
復(fù)制代碼
使用docker命令啟動(dòng):

docker run -d --name rabbitmq \
--publish 5671:5671 --publish 5672:5672 --publish 4369:4369 \
--publish 25672:25672 --publish 15671:15671 --publish 15672:15672 \
rabbitmq:3.7.15
復(fù)制代碼
進(jìn)入容器并開(kāi)啟管理功能:

docker exec -it rabbitmq /bin/bash
rabbitmq-plugins enable rabbitmq_management
復(fù)制代碼
Spring Boot 實(shí)戰(zhàn)項(xiàng)目 mall 在 Linux 環(huán)境下的部署(基于 Docker 容器)
開(kāi)啟防火墻:

firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --reload
復(fù)制代碼
訪問(wèn)地址查看是否安裝成功:http://192.168.3.101:15672/
Spring Boot 實(shí)戰(zhàn)項(xiàng)目 mall 在 Linux 環(huán)境下的部署(基于 Docker 容器)
輸入賬號(hào)密碼并登錄:guest guest
創(chuàng)建帳號(hào)并設(shè)置其角色為管理員:mall mall
Spring Boot 實(shí)戰(zhàn)項(xiàng)目 mall 在 Linux 環(huán)境下的部署(基于 Docker 容器)
創(chuàng)建一個(gè)新的虛擬host為:/mall

Spring Boot 實(shí)戰(zhàn)項(xiàng)目 mall 在 Linux 環(huán)境下的部署(基于 Docker 容器)
點(diǎn)擊mall用戶進(jìn)入用戶配置頁(yè)面
Spring Boot 實(shí)戰(zhàn)項(xiàng)目 mall 在 Linux 環(huán)境下的部署(基于 Docker 容器)
給mall用戶配置該虛擬host的權(quán)限

Spring Boot 實(shí)戰(zhàn)項(xiàng)目 mall 在 Linux 環(huán)境下的部署(基于 Docker 容器)

Elasticsearch安裝

下載elasticsearch7.4.0的docker鏡像:

docker pull elasticsearch:6.4.0
復(fù)制代碼
修改虛擬內(nèi)存區(qū)域大小,否則會(huì)因?yàn)檫^(guò)小而無(wú)法啟動(dòng):

sysctl -w vm.max_map_count=262144
復(fù)制代碼
使用docker命令啟動(dòng):

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:6.4.0
復(fù)制代碼
啟動(dòng)時(shí)會(huì)發(fā)現(xiàn)/usr/share/elasticsearch/data目錄沒(méi)有訪問(wèn)權(quán)限,只需要修改/mydata/elasticsearch/data目錄的權(quán)限,再重新啟動(dòng)。

chmod 777 /mydata/elasticsearch/data/
復(fù)制代碼
安裝中文分詞器IKAnalyzer,并重新啟動(dòng):

docker exec -it elasticsearch /bin/bash
#此命令需要在容器中運(yùn)行
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.4.0/elasticsearch-analysis-ik-6.4.0.zip
docker restart elasticsearch
復(fù)制代碼
開(kāi)啟防火墻:

firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --reload
復(fù)制代碼
訪問(wèn)會(huì)返回版本信息:http://192.168.3.101:9200/
Spring Boot 實(shí)戰(zhàn)項(xiàng)目 mall 在 Linux 環(huán)境下的部署(基于 Docker 容器)

kibana安裝

下載kibana6.4.0的docker鏡像:

docker pull kibana:6.4.0
復(fù)制代碼
使用docker命令啟動(dòng):

docker run --name kibana -p 5601:5601 \
--link elasticsearch:es \
-e "elasticsearch.hosts=http://es:9200" \
-d kibana:6.4.0
復(fù)制代碼
開(kāi)啟防火墻:

firewall-cmd --zone=public --add-port=5601/tcp --permanent
firewall-cmd --reload
復(fù)制代碼
訪問(wèn)地址進(jìn)行測(cè)試:http://192.168.3.101:5601
Spring Boot 實(shí)戰(zhàn)項(xiàng)目 mall 在 Linux 環(huán)境下的部署(基于 Docker 容器)

Mongodb安裝

下載mongo3.2的docker鏡像:

docker pull mongo:3.2
復(fù)制代碼
使用docker命令啟動(dòng):

docker run -p 27017:27017 --name mongo \
-v /mydata/mongo/db:/data/db \
-d mongo:3.2
復(fù)制代碼Docker全部環(huán)境安裝完成
Spring Boot 實(shí)戰(zhàn)項(xiàng)目 mall 在 Linux 環(huán)境下的部署(基于 Docker 容器)
所有下載鏡像文件:

所有運(yùn)行在容器里面的應(yīng)用:
Spring Boot 實(shí)戰(zhàn)項(xiàng)目 mall 在 Linux 環(huán)境下的部署(基于 Docker 容器)

SpringBoot應(yīng)用部署
構(gòu)建所有Docker鏡像并上傳

打開(kāi)pom.xml中使用docker插件的注釋:
Spring Boot 實(shí)戰(zhàn)項(xiàng)目 mall 在 Linux 環(huán)境下的部署(基于 Docker 容器)
修改dockerHost為你自己的docker服務(wù)器地址:
構(gòu)建鏡像并上傳:
Spring Boot 實(shí)戰(zhàn)項(xiàng)目 mall 在 Linux 環(huán)境下的部署(基于 Docker 容器)Spring Boot 實(shí)戰(zhàn)項(xiàng)目 mall 在 Linux 環(huán)境下的部署(基于 Docker 容器)

部署mall-admin
docker run -p 8080:8080 --name mall-admin \
--link mysql:db \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/admin/logs:/var/logs \
-d mall/mall-admin:1.0-SNAPSHOT
復(fù)制代碼注意:CenterOS7.2版本需要加入此行,否則容器時(shí)區(qū)和宿主機(jī)無(wú)法同步
-v /etc/timezone:/etc/timezone \
復(fù)制代碼部署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
復(fù)制代碼部署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
復(fù)制代碼開(kāi)啟防火墻
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
復(fù)制代碼訪問(wèn)接口進(jìn)行測(cè)試

mall-admin的api接口文檔地址:http://192.168.3.101:8080/swagger-ui.html
Spring Boot 實(shí)戰(zhàn)項(xiàng)目 mall 在 Linux 環(huán)境下的部署(基于 Docker 容器)
mall-search的api接口文檔地址:http://192.168.3.101:8081/swagger-ui.html
Spring Boot 實(shí)戰(zhàn)項(xiàng)目 mall 在 Linux 環(huán)境下的部署(基于 Docker 容器)
mall-portal的api接口文檔地址:http://192.168.3.101:8085/swagger-ui.html

Spring Boot 實(shí)戰(zhàn)項(xiàng)目 mall 在 Linux 環(huán)境下的部署(基于 Docker 容器)
歡迎工作一到五年的Java工程師朋友們加入JavaQQ群:219571750,群內(nèi)提供免費(fèi)的Java架構(gòu)學(xué)習(xí)資料(里面有高可用、高并發(fā)、高性能及分布式、Jvm性能調(diào)優(yōu)、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個(gè)知識(shí)點(diǎn)的架構(gòu)資料)合理利用自己每一分每一秒的時(shí)間來(lái)學(xué)習(xí)提升自己,不要再用"沒(méi)有時(shí)間“來(lái)掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來(lái)的自己一個(gè)交代!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI