mall在Linux環境下的部署(基於Docker容器)

mall在Linux環境下的部署(基於Docker容器)

本文主要以圖文的形式講解mall在Linux環境下的部署,涉及在Docker容器中安裝Mysql、Redis、Nginx、RabbitMQ、Elasticsearch、Mongodb,以及SpringBoot應用部署,基於CenterOS7.6。

Docker環境安裝

  • 安裝yum-utils:
  1. yum install-y yum-utils device-mapper-persistent-data lvm2
  • 為yum源新增docker倉庫位置:
  1. yum-config-manager--add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 安裝docker:
  1. yum install docker-ce
  • 啟動docker:
  1. systemctl start docker

Mysql安裝

  • 下載mysql5.7的docker映象:
  1. docker pull mysql:5.7
  • 使用docker命令啟動:
  1. docker run-p3306:3306--name mysql
  2. -v/mydata/mysql/log:/var/log/mysql
  3. -v/mydata/mysql/data:/var/lib/mysql
  4. -v/mydata/mysql/conf:/etc/mysql
  5. -e MYSQL_ROOT_PASSWORD=root
  6. -d mysql:5.7
  • 引數說明
    • -p 3306:3306:將容器的3306埠對映到主機的3306埠
    • -v /mydata/mysql/conf:/etc/mysql:將配置資料夾掛在到主機
    • -v /mydata/mysql/log:/var/log/mysql:將日誌資料夾掛載到主機
    • -v /mydata/mysql/data:/var/lib/mysql/:將資料資料夾掛載到主機
    • -e MYSQLROOTPASSWORD=root:初始化root使用者的密碼
  • 進入執行mysql的docker容器:
  1. dockerexec-it mysql/bin/bash
  • 使用mysql命令開啟客戶端:
  1. mysql-uroot-proot--default-character-set=utf8
  • 建立mall資料庫:
  1. create database mall charactersetutf8
  • 安裝上傳下載外掛,並將docment/sql/mall.sql上傳到Linux伺服器上:
  1. yum-y install lrzsz
  • 將mall.sql檔案複製到mysql容器的/目錄下:
  1. docker cp/mydata/mall.sql mysql:/
  • 將sql檔案匯入到資料庫:
  1. usemall;
  2. source/mall.sql;
  • 建立一個reader帳號並修改許可權,使得任何ip都能訪問:
  1. grant all privileges on*.*to'reader'@'%'identifiedby'123456';

Redis安裝

  • 下載redis3.2的docker映象:
  1. docker pull redis:3.2
  • 使用docker命令啟動:
  1. docker run-p6379:6379--name redis
  2. -v/mydata/redis/data:/data
  3. -d redis:3.2redis-server--appendonly yes
  • 進入redis容器使用redis-cli命令進行連線:
  1. dockerexec-it redis redis-cli

Nginx安裝

下載nginx1.10的docker映象:

  1. docker pull nginx:1.10

從容器中複製nginx配置

  • 先執行一次容器(為了複製配置檔案):
  1. docker run-p80:80--name nginx
  2. -v/mydata/nginx/html:/usr/share/nginx/html
  3. -v/mydata/nginx/logs:/var/log/nginx
  4. -d nginx:1.10
  • 將容器內的配置檔案複製到指定目錄:
  1. docker container cp nginx:/etc/nginx/mydata/nginx/
  • 修改檔名稱:
  1. mv nginx conf
  • 終止並刪除容器:
  1. docker stop nginx
  2. docker rm nginx

使用docker命令啟動:

  1. docker run-p80:80--name nginx
  2. -v/mydata/nginx/html:/usr/share/nginx/html
  3. -v/mydata/nginx/logs:/var/log/nginx
  4. -v/mydata/nginx/conf:/etc/nginx
  5. -d nginx:1.10

RabbitMQ安裝

  • 下載rabbitmq3.7.15的docker映象:
  1. docker pull rabbitmq:3.7.15
  • 使用docker命令啟動:
  1. docker run-d--name rabbitmq
  2. --publish5671:5671--publish5672:5672--publish4369:4369
  3. --publish25672:25672--publish15671:15671--publish15672:15672
  4. rabbitmq:3.7.15
  • 進入容器並開啟管理功能:
  1. dockerexec-it rabbitmq/bin/bash
  2. rabbitmq-plugins enable rabbitmq_management
  • 開啟防火牆:
  1. firewall-cmd--zone=public--add-port=15672/tcp--permanent
  2. firewall-cmd--reload
  • 訪問地址檢視是否安裝成功:http://192.168.3.101:15672/

  • 輸入賬號密碼並登入:guest guest
  • 建立帳號並設定其角色為管理員:mall mall

  • 建立一個新的虛擬host為:/mall

  • 點選mall使用者進入使用者配置頁面

  • 給mall使用者配置該虛擬host的許可權

Elasticsearch安裝

  • 下載elasticsearch6.4.0的docker映象:
  1. docker pull elasticsearch:6.4.0
  • 修改虛擬記憶體區域大小,否則會因為過小而無法啟動:
  1. sysctl-w vm.max_map_count=262144
  • 使用docker命令啟動:
  1. docker run-p9200:9200-p9300:9300--name elasticsearch
  2. -e"discovery.type=single-node"
  3. -e"cluster.name=elasticsearch"
  4. -v/mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins
  5. -v/mydata/elasticsearch/data:/usr/share/elasticsearch/data
  6. -d elasticsearch:6.4.0
  • 啟動時會發現/usr/share/elasticsearch/data目錄沒有訪問許可權,只需要修改/mydata/elasticsearch/data目錄的許可權,再重新啟動。
  1. chmod777/mydata/elasticsearch/data/
  • 安裝中文分詞器IKAnalyzer,並重新啟動:
  1. dockerexec-it elasticsearch/bin/bash
  2. #此命令需要在容器中執行
  3. elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.4.0/elasticsearch-analysis-ik-6.4.0.zip
  4. docker restart elasticsearch
  • 開啟防火牆:
  1. firewall-cmd--zone=public--add-port=9200/tcp--permanent
  2. firewall-cmd--reload
  • 訪問會返回版本資訊:http://192.168.3.101:9200/

kibana安裝

  • 下載kibana6.4.0的docker映象:
  1. docker pull kibana:6.4.0
  • 使用docker命令啟動:
  1. docker run--name kibana-p5601:5601
  2. --link elasticsearch:es
  3. -e"elasticsearch.hosts=http://es:9200"
  4. -d kibana:6.4.0
  • 開啟防火牆:
  1. firewall-cmd--zone=public--add-port=5601/tcp--permanent
  2. firewall-cmd--reload
  • 訪問地址進行測試:http://192.168.3.101:5601

Mongodb安裝

  • 下載mongo3.2的docker映象:
  1. docker pull mongo:3.2
  • 使用docker命令啟動:
  1. docker run-p27017:27017--name mongo
  2. -v/mydata/mongo/db:/data/db
  3. -d mongo:3.2

Docker全部環境安裝完成

  • 所有下載映象檔案:

  • 所有執行在容器裡面的應用:

SpringBoot應用部署

構建所有Docker映象並上傳

  • 開啟pom.xml中使用docker外掛的註釋:

  • 修改dockerHost為你自己的docker伺服器地址:
  • 構建映象並上傳:

部署mall-admin

  1. docker run-p8080:8080--name mall-admin
  2. --link mysql:db
  3. -v/etc/localtime:/etc/localtime
  4. -v/mydata/app/admin/logs:/var/logs
  5. -d mall/mall-admin:1.0-SNAPSHOT
注意:CenterOS7.2版本需要加入此行,否則容器時區和宿主機無法同步
  1. -v/etc/timezone:/etc/timezone

部署mall-search

  1. docker run-p8081:8081--name mall-search
  2. --link elasticsearch:es
  3. --link mysql:db
  4. -v/etc/localtime:/etc/localtime
  5. -v/mydata/app/search/logs:/var/logs
  6. -d mall/mall-search:1.0-SNAPSHOT

部署mall-port

  1. docker run-p8085:8085--name mall-portal
  2. --link mysql:db
  3. --link redis:redis
  4. --link mongo:mongo
  5. --link rabbitmq:rabbit
  6. -v/etc/localtime:/etc/localtime
  7. -v/mydata/app/portal/logs:/var/logs
  8. -d mall/mall-portal:1.0-SNAPSHOT

開啟防火牆

  1. firewall-cmd--zone=public--add-port=8080/tcp--permanent
  2. firewall-cmd--zone=public--add-port=8081/tcp--permanent
  3. firewall-cmd--zone=public--add-port=8085/tcp--permanent
  4. firewall-cmd--reload

訪問介面進行測試

  • mall-admin的api介面文件地址:http://192.168.3.101:8080/swagger-ui.html

  • mall-search的api介面文件地址:http://192.168.3.101:8081/swagger-ui.html

  • mall-portal的api介面文件地址:http://192.168.3.101:8085/swagger-ui.html

推薦閱讀


歡迎關注,點個在看

相關文章