SpringBoot實戰項目mall在Linux環境下的部署(基於Docker Compose)

SpringBoot實戰電商項目mall地址:github.com/macrozheng/…html

簡介

最簡單的mall在Linux下部署方式,使用兩個docker-compse腳本就能夠完成部署。第一個腳本用於部署mall運行所依賴的服務(mysql、redis、nginx、rabbitmq、elasticsearch、kibana、mongo),第二個腳本用於部署mall中的應用(mall-admin、mall-search、mall-portal)。node

docker環境搭建及使用

具體參考:開發者必備Docker命令mysql

docker-compose環境搭建及使用

具體參考:使用Docker Compose部署SpringBoot應用linux

mall項目的docker-compose部署

運行配置要求

CenterOS7.6版本,推薦4G以上內存nginx

部署相關文件

部署前準備

打包並上傳mall應用的鏡像

須要打包mall-admin、mall-search、mall-portal的docker鏡像,具體參考:使用Maven插件爲SpringBoot應用構建Docker鏡像git

下載全部須要安裝的Docker鏡像

docker pull mysql:5.7
docker pull redis:3.2
docker pull nginx:1.10
docker pull rabbitmq:3.7.15-management
docker pull elasticsearch:6.4.0
docker pull kibana:6.4.0
docker pull mongo:3.2
複製代碼

elasticsearch

  • 須要設置系統內核參數,不然會由於內存不足沒法啓動。
# 改變設置
sysctl -w vm.max_map_count=262144
# 使之當即生效
sysctl -p
複製代碼
  • 須要建立/mydata/elasticsearch/data目錄並設置權限,不然會由於無權限訪問而啓動失敗。
# 建立目錄
mkdir /mydata/elasticsearch/data/
# 建立並改變該目錄權限
chmod 777 /mydata/elasticsearch/data
複製代碼

nginx

須要拷貝nginx配置文件,不然掛載時會由於沒有配置文件而啓動失敗。github

# 建立目錄以後將nginx.conf文件上傳到該目錄下面
mkdir /mydata/nginx/
複製代碼

執行docker-compose-env.yml腳本

將該文件上傳的linux服務器上,執行docker-compose up命令便可啓動mall所依賴的全部服務。redis

version: '3'
services:
 mysql:
 image: mysql:5.7
 container_name: mysql
 command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
 restart: always
 environment:
 MYSQL_ROOT_PASSWORD: root #設置root賬號密碼
 ports:
 - 3306:3306
 volumes:
 - /mydata/mysql/data/db:/var/lib/mysql #數據文件掛載
 - /mydata/mysql/data/conf:/etc/mysql/conf.d #配置文件掛載
 - /mydata/mysql/log:/var/log/mysql #日誌文件掛載
 redis:
 image: redis:3.2
 container_name: redis
 command: redis-server --appendonly yes
 volumes:
 - /mydata/redis/data:/data #數據文件掛載
 ports:
 - 6379:6379
 nginx:
 image: nginx:1.10
 container_name: nginx
 volumes:
 - /mydata/nginx/nginx.conf:/etc/nginx/nginx.conf #配置文件掛載
 - /mydata/nginx/html:/usr/share/nginx/html #靜態資源根目錄掛載
 - /mydata/nginx/log:/var/log/nginx #日誌文件掛載
 ports:
 - 80:80
 rabbitmq:
 image: rabbitmq:3.7.15-management
 container_name: rabbitmq
 volumes:
 - /mydata/rabbitmq/data:/var/lib/rabbitmq #數據文件掛載
 - /mydata/rabbitmq/log:/var/log/rabbitmq #日誌文件掛載
 ports:
 - 5672:5672
 - 15672:15672
 elasticsearch:
 image: elasticsearch:6.4.0
 container_name: elasticsearch
 environment:
 - "cluster.name=elasticsearch" #設置集羣名稱爲elasticsearch
 - "discovery.type=single-node" #以單一節點模式啓動
 - "ES_JAVA_OPTS=-Xms512m -Xmx512m" #設置使用jvm內存大小
 volumes:
 - /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件掛載
 - /mydata/elasticsearch/data:/usr/share/elasticsearch/data #數據文件掛載
 ports:
 - 9200:9200
 kibana:
 image: kibana:6.4.0
 container_name: kibana
 links:
 - elasticsearch:es #能夠用es這個域名訪問elasticsearch服務
 depends_on:
 - elasticsearch #kibana在elasticsearch啓動以後再啓動
 environment:
 - "elasticsearch.hosts=http://es:9200" #設置訪問elasticsearch的地址
 ports:
 - 5601:5601
 mongo:
 image: mongo:3.2
 container_name: mongo
 volumes:
 - /mydata/mongo/db:/data/db #數據文件掛載
 ports:
 - 27017:27017
複製代碼

上傳完後在當前目錄下執行以下命令:sql

docker-compose -f docker-compose-env.yml up -d
複製代碼

展現圖片

對依賴服務進行如下設置

當全部依賴服務啓動完成後,須要對如下服務進行一些設置。docker

mysql

須要建立mall數據庫並建立一個能夠遠程訪問的對象reader。

  • 將mall.sql文件拷貝到mysql容器的/目錄下:
docker cp /mydata/mall.sql mysql:/
複製代碼
  • 進入mysql容器並執行以下操做:
#進入mysql容器
docker exec -it mysql /bin/bash
#鏈接到mysql服務
mysql -uroot -proot --default-character-set=utf8
#建立遠程訪問用戶
grant all privileges on *.* to 'reader' @'%' identified by '123456';
#建立mall數據庫
create database mall character set utf8;
#使用mall數據庫
use mall;
#導入mall.sql腳本
source /mall.sql;
複製代碼

elasticsearch

須要安裝中文分詞器IKAnalyzer,並從新啓動。

docker exec -it elasticsearch /bin/bash
#此命令須要在容器中運行
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
複製代碼

rabbitmq

須要建立一個mall用戶並設置虛擬host爲/mall。

  • 訪問管理頁面地址:http://192.168.3.101:15672/
    展現圖片
  • 輸入帳號密碼並登陸:guest guest
  • 建立賬號並設置其角色爲管理員:mall mall
    展現圖片
  • 建立一個新的虛擬host爲:/mall
    展現圖片
  • 點擊mall用戶進入用戶配置頁面
    展現圖片
  • 給mall用戶配置該虛擬host的權限
    展現圖片

執行docker-compose-app.yml腳本

將該文件上傳的linux服務器上,執行docker-compose up命令便可啓動mall全部的應用。

version: '3'
services:
 mall-admin:
 image: mall/mall-admin:1.0-SNAPSHOT
 container_name: mall-admin
 ports:
 - 8080:8080
 external_links:
 - mysql:db #能夠用db這個域名訪問mysql服務
 mall-search:
 image: mall/mall-search:1.0-SNAPSHOT
 container_name: mall-search
 ports:
 - 8081:8081
 external_links:
 - elasticsearch:es #能夠用es這個域名訪問elasticsearch服務
 - mysql:db #能夠用db這個域名訪問mysql服務
 mall-portal:
 image: mall/mall-portal:1.0-SNAPSHOT
 container_name: mall-portal
 ports:
 - 8085:8085
 external_links:
 - redis:redis #能夠用redis這個域名訪問redis服務
 - mongo:mongo #能夠用mongo這個域名訪問mongo服務
 - mysql:db #能夠用db這個域名訪問mysql服務
 - rabbitmq:rabbit #能夠用rabbit這個域名訪問rabbitmq服務
複製代碼

上傳完後在當前目錄下執行以下命令:

docker-compose -f docker-compose-app.yml up -d
複製代碼

展現圖片

開啓防火牆便可在其餘主機上訪問全部服務

systemctl stop firewalld
複製代碼

至此全部服務已經正常啓動

展現圖片

展現圖片

公衆號

mall項目全套學習教程連載中,關注公衆號第一時間獲取。

公衆號圖片
相關文章
相關標籤/搜索