Springcloud Aibaba如今這麼火,我一直想寫個基於Springcloud Alibaba一步一步構建微服務架構的系列博客,終於下定決心從今天開始本系列文章的第一篇 - 基礎環境準備。html
該系列文章內容主要基於三個微服務:用戶服務AccountService
,訂單服務OrderService
,產品服務ProductService
java
用到的組件有:mysql
因爲用到的組件相對較多,部署會很繁瑣,最關鍵的是沒有資源服務器,因此在開發過程當中我會逐漸將一些組件使用docker-compose部署。
git
本篇內容就是使用Dokcer-compose部署Nacos,Sentinel,Mysql,做爲後面的系列文章的基礎環境。github
若是你對docker或者docker-compose不是很熟悉的話,你能夠翻看我以前的兩篇文章,看完後相信你能很快入手。sql
因爲nacos須要依賴於Mysql做爲資源存儲,因此在編寫完整docker-compose以前我會先用docker啓動臨時的mysql容器,而後準備好nacos須要的數據庫。docker
啓動臨時容器
docker run -p3306:3306 --rm --name mysql -e MYSQL_ROOT_PASSWORD=123456 -v /app/cloud/mysql/data:/var/lib/mysql mysql:5.7
此處須要掛載宿主機目錄,在啓動docker-compse後就不須要再次初識化數據。數據庫
用mysql客戶端鏈接你的容器,而後導入nacos的數據表
https://github.com/alibaba/nacos/tree/develop/distribution/conf/ nacos-mysql.sql
服務器
中止容器,因爲加了--rm
參數,因此容器會自動刪除
docker stop 3475ef078d3a
架構
咱們來看看NACOS的環境變量,以下表所示:
配置項 | 描述 | 可選參數 | 默認值 |
---|---|---|---|
MODE | 模式 cluster/standalone | cluster/standalone | cluster |
PREFER_HOST_MODE | 是否支持 hostname | hostname/ip | ip |
NACOS_SERVER_PORT | 服務端口號 | 8848 | |
SPRING_DATASOURCE_PLATFORM | 單機模式支持 mysql | mysql / empty | empty |
MYSQL_MASTER_SERVICE_HOST | mysql 主節點 host | ||
MYSQL_MASTER_SERVICE_PORT | mysql 主節點 port | 3306 | |
MYSQL_MASTER_SERVICE_DB_NAME | mysql 主節點數據庫名 | ||
MYSQL_MASTER_SERVICE_USER | mysql 主節點用戶名 | ||
MYSQL_MASTER_SERVICE_PASSWORD | mysql 主節點密碼 | ||
MYSQL_SLAVE_SERVICE_HOST | mysql 從節點 host | ||
MYSQL_SLAVE_SERVICE_PORT | mysql 從節點 port | 3306 |
Nacos支持主從配置,考慮到資源問題,咱們只配置一臺單獨的mysql服務器,有資源的同窗能夠搭建主從環境。
sentinel比較簡單,直接配置sentinel-dashboard
鏡像便可。
(在系列的開始不須要引入sentinel組件,爲了後面再也不單獨介紹,本次我也把他加到個人docker-compose中)
seata因爲一些緣由,還沒發佈官方鏡像,暫時擱淺。
如下是我編寫的docker-compse文件,你們能夠自行修改
version: "3" services: mysql: container_name: mysql image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=123456 volumes: - /app/cloud/mysql/data:/var/lib/mysql ports: - "3306:3306" restart: always nacos: image: nacos/nacos-server:1.1.4 container_name: nacos environment: - PREFER_HOST_MODE=hostname - MODE=standalone - MYSQL_DATABASE_NUM=1 - SPRING_DATASOURCE_PLATFORM=mysql - MYSQL_MASTER_SERVICE_HOST=mysql - MYSQL_MASTER_SERVICE_DB_NAME=nacos_config - MYSQL_MASTER_SERVICE_PORT=3306 - MYSQL_MASTER_SERVICE_USER=root - MYSQL_MASTER_SERVICE_PASSWORD=123456 volumes: - /app/cloud/nacos/logs:/home/nacos/logs ports: - "8848:8848" depends_on: - mysql restart: always sentinel: image: bladex/sentinel-dashboard:latest container_name: sentinel ports: - "8858:8858" restart: always
將其上傳至你的服務器,執行docker-compose up -d
命令啓動
訪問nacoshttp://192.168.136.129:8848/nacos
,使用帳號密碼nacos/nacos登陸,添加一個name=JAVA日知錄
的配置。
nacos安裝成功!
使用客戶端工具鏈接上mysql服務,查看his_config_info
表,確認是否有剛剛的配置
mysql安裝成功!
訪問http://192.168.136.129:8858
使用帳號sentinel/sentinel登陸
sentinel安裝成功!
至此前期所須要的組件都安裝成功,那麼本期的「SpringCloud Alibaba微服務實戰 - 基礎環境準備」篇也就該結束啦,我們下期有緣再見!
我的公衆號:JAVA日知錄 , javadaily.cn