如何在Linux環(huán)境下的部署(基于Docker容器)

本文主要以圖文的形式講解項(xiàng)目在Linux環(huán)境下的部署,涉及在Docker容器中安裝MySQL、Redis、Nginx、RabbitMQ、MongoDB、Elasticsearch、Logstash、Kibana,以及SpringBoot應(yīng)用部署,基于CenterOS7.6

[Docker環(huán)境安裝]

  • 安裝yum-utils
yum install -y yum-utils device-mapper-persistent-data lvm2
  • 為yum源添加docker倉(cāng)庫(kù)位置:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 安裝docker:
yum install docker-ce
  • 啟動(dòng)docker:
systemctl start docker

[MySQL安裝]

  • 下載MySQL5.7的docker鏡像:
docker pull mysql:5.7
  • 使用如下命令啟動(dòng)MySQL服務(wù):
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
  • 參數(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
  • 使用MySQL命令打開(kāi)客戶端:
mysql -uroot -proot --default-character-set=utf8
  • 創(chuàng)建mall數(shù)據(jù)庫(kù):
create database mall character set utf8
  • 安裝上傳下載插件,并將document/sql/mall.sql上傳到Linux服務(wù)器上:
yum -y install lrzsz
  • mall.sql文件拷貝到mysql容器的/目錄下:
docker cp /mydata/mall.sql mysql:/
  • 將sql文件導(dǎo)入到數(shù)據(jù)庫(kù):
use mall;
source /mall.sql;
  • 創(chuàng)建一個(gè)reader:123456帳號(hào)并修改權(quán)限,使得任何ip都能訪問(wèn):
grant all privileges on *.* to 'reader' @'%' identified by '123456';

[Redis安裝]

  • 下載Redis5.0的docker鏡像:
docker pull redis:5
  • 使用如下命令啟動(dòng)Redis服務(wù):
docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-d redis:5 redis-server --appendonly yes
  • 進(jìn)入Redis容器使用redis-cli命令進(jìn)行連接:
docker exec -it redis redis-cli
image

[Nginx安裝]

  • 下載Nginx1.10的docker鏡像:
docker pull nginx:1.10
  • 先運(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
  • 將容器內(nèi)的配置文件拷貝到指定目錄:
docker container cp nginx:/etc/nginx /mydata/nginx/
  • 修改文件名稱:
mv nginx conf
  • 終止并刪除容器:
docker stop nginx
docker rm nginx
  • 使用如下命令啟動(dòng)Nginx服務(wù):
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安裝]

  • 下載rabbitmq3.7.15的docker鏡像:
docker pull rabbitmq:3.7.15
  • 使用如下命令啟動(dòng)RabbitMQ服務(wù):
docker run -p 5672:5672 -p 15672:15672 --name rabbitmq \
-d rabbitmq:3.7.15
  • 進(jìn)入容器并開(kāi)啟管理功能:
docker exec -it rabbitmq /bin/bash
rabbitmq-plugins enable rabbitmq_management
image
  • 開(kāi)啟防火墻:
firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --reload
image
  • 輸入賬號(hào)密碼并登錄:guest guest

  • 創(chuàng)建帳號(hào)并設(shè)置其角色為管理員:mall mall

image
  • 創(chuàng)建一個(gè)新的虛擬host為:/mall
image
  • 點(diǎn)擊mall用戶進(jìn)入用戶配置頁(yè)面
image
  • 給mall用戶配置該虛擬host的權(quán)限
image

[Elasticsearch安裝]

  • 下載Elasticsearch7.6.2的docker鏡像:
docker pull elasticsearch:7.6.2
  • 修改虛擬內(nèi)存區(qū)域大小,否則會(huì)因?yàn)檫^(guò)小而無(wú)法啟動(dòng):
sysctl -w vm.max_map_count=262144
  • 使用如下命令啟動(dòng)Elasticsearch服務(wù):
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
  • 啟動(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/
  • 安裝中文分詞器IKAnalyzer,并重新啟動(dòng):
docker exec -it elasticsearch /bin/bash
#此命令需要在容器中運(yùn)行
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
docker restart elasticsearch
  • 開(kāi)啟防火墻:
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --reload
image

[Logstash安裝]

  • 下載Logstash7.6.2的docker鏡像:
docker pull logstash:7.6.2
  • 修改Logstash的配置文件logstash.confoutput節(jié)點(diǎn)下的Elasticsearch連接地址為es:9200,配置文件地址:
output {
  elasticsearch {
    hosts => "es:9200"
    index => "mall-%{type}-%{+YYYY.MM.dd}"
  }
}
  • 創(chuàng)建/mydata/logstash目錄,并將Logstash的配置文件logstash.conf拷貝到該目錄;
mkdir /mydata/logstash
  • 使用如下命令啟動(dòng)Logstash服務(wù);
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
  • 進(jìn)入容器內(nèi)部,安裝json_lines插件。
logstash-plugin install logstash-codec-json_lines

[Kibana安裝]

  • 下載Kibana7.6.2的docker鏡像:
docker pull kibana:7.6.2
  • 使用如下命令啟動(dòng)Kibana服務(wù):
docker run --name kibana -p 5601:5601 \
--link elasticsearch:es \
-e "elasticsearch.hosts=http://es:9200" \
-d kibana:7.6.2
  • 開(kāi)啟防火墻:
firewall-cmd --zone=public --add-port=5601/tcp --permanent
firewall-cmd --reload
image

[MongoDB安裝]

  • 下載MongoDB4.2.5的docker鏡像:
docker pull mongo:4.2.5
  • 使用docker命令啟動(dòng):
docker run -p 27017:27017 --name mongo \
-v /mydata/mongo/db:/data/db \
-d mongo:4.2.5

[Docker全部環(huán)境安裝完成]

  • 所有下載鏡像文件:
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
redis                 5                   071538dbbd71        2 weeks ago         98.3MB
mongo                 4.2.5               fddee5bccba3        3 months ago        388MB
logstash              7.6.2               fa5b3b1e9757        4 months ago        813MB
kibana                7.6.2               f70986bc5191        4 months ago        1.01GB
elasticsearch         7.6.2               f29a1ee41030        4 months ago        791MB
rabbitmq              3.7.15-management   6ffc11daa8d0        13 months ago       186MB
mysql                 5.7                 7faa3c53e6d6        15 months ago       373MB
registry              2                   f32a97de94e1        17 months ago       25.8MB
nginx                 1.10                0346349a1a64        3 years ago         182MB
java                  8                   d23bdf5b1b1b        3 years ago         643MB
  • 所有運(yùn)行在容器里面的應(yīng)用:
image

[SpringBoot應(yīng)用部署]

[構(gòu)建所有Docker鏡像并上傳]

  • 修改項(xiàng)目根目錄下的pom.xml中的docker.host屬性:
<properties>
    <docker.host>http://192.168.3.101:2375</docker.host>
</properties>
  • 如果項(xiàng)目根目錄的pom.mxldocker-maven-plugin<executions>節(jié)點(diǎn)被注釋掉了就打開(kāi)注釋?zhuān)鬼?xiàng)目在打包時(shí)直接構(gòu)建Docker鏡像;
image
  • 直接雙擊根項(xiàng)目mallpackage命令可以一次性打包所有應(yīng)用的Docker鏡像;
image
REPOSITORY            TAG                 IMAGE ID            CREATED              SIZE
mall/mall-portal      1.0-SNAPSHOT        70e0f76416a0        21 seconds ago       705MB
mall/mall-search      1.0-SNAPSHOT        f3290bd1d0c7        41 seconds ago       725MB
mall/mall-admin       1.0-SNAPSHOT        26557b93a106        About a minute ago   705MB

[部署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

注意:如果想使用Logstash收集日志的話,需要將應(yīng)用容器連接到Logstsh,添加如下配置即可;

--link logstash:logstash \

[部署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

[部署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

[開(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

[訪問(wèn)接口進(jìn)行測(cè)試]

image
image
image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評(píng)論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,538評(píng)論 3 417
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,423評(píng)論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,991評(píng)論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,761評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,207評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,419評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,959評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,782評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,983評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,222評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,653評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,901評(píng)論 1 286
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,678評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,978評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容