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命令mysql
具體參考:使用Docker Compose部署SpringBoot應用linux
CenterOS7.6版本,推薦4G以上內存nginx
須要打包mall-admin、mall-search、mall-portal的docker鏡像,具體參考:使用Maven插件爲SpringBoot應用構建Docker鏡像git
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
複製代碼
# 改變設置
sysctl -w vm.max_map_count=262144
# 使之當即生效
sysctl -p
複製代碼
# 建立目錄
mkdir /mydata/elasticsearch/data/
# 建立並改變該目錄權限
chmod 777 /mydata/elasticsearch/data
複製代碼
須要拷貝nginx配置文件,不然掛載時會由於沒有配置文件而啓動失敗。github
# 建立目錄以後將nginx.conf文件上傳到該目錄下面
mkdir /mydata/nginx/
複製代碼
將該文件上傳的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
須要建立mall數據庫並建立一個能夠遠程訪問的對象reader。
docker cp /mydata/mall.sql 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;
複製代碼
須要安裝中文分詞器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
複製代碼
須要建立一個mall用戶並設置虛擬host爲/mall。
將該文件上傳的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項目全套學習教程連載中,關注公衆號第一時間獲取。