JHipster生成微服務架構的應用棧(五)- 容器編排示例


本系列文章演示如何用JHipster生成一個微服務架構風格的應用棧。
環境需求:安裝好JHipster開發環境的CentOS 7.4(參考這里
應用棧名稱:appstack
認證微服務: uaa
業務微服務:microservice1
網關微服務:gateway
實體名:role
主機IP:192.168.220.120

1 前提條件

1.1 已經生成微服務架構的應用棧

請參考這個系列的前4篇文章。

1.2 安裝Docker Compose

推薦版本:1.21.2
完整安裝說明,請參考這里

1.3 創建一個編排目錄

在命令行,進入appstack目錄,創建一個子目錄docker-compose,現在整個應用棧的目錄結構是這樣的:

-- appstack
  |-- uaa
  |-- microservice1
  |-- gateway
  |-- docker-compose

1.4 公共鏡像

預先下載openjdk:8-jre-alpine容器鏡像,能提高后續工作的效率。

2 構建微服務的鏡像

2.1 構建所有微服務的鏡像

注意:編寫本文時使用的JHipster版本為5.1.0,鏡像構建命令為:'dockerfile:build';JHipster '5.4.0'及之后的版本使用新的鏡像構建命令:'jib:dockerBuild'。

a, 構建uaa鏡像

進入uaa目錄,輸入命令后回車:

$ cd uaa/
$ mvn –Pdev clean package dockerfile:build
b, 構建microservice1鏡像

進入microservice1目錄,輸入命令后回車:

$ cd microservice1/
$ mvn –Pdev clean package dockerfile:build
c, 構建gateway鏡像

進入gateway目錄,輸入命令后回車:

$ cd gateway/
$ mvn –Pdev clean package dockerfile:build

構建成功后,可以通過docker命令查看鏡像列表:

$ docker images

3 生成編排文件

進入docker-compose目錄,輸入命令后回車:

$ cd docker-compose/
$ jhipster docker-compose

命令行輸出jhipster:docker-compose命令啟動信息

現在開始問答環節

3.1 Which type of application would you like to deploy?

選擇想要部署的應用類型
這是一個單選題,有2個選項,使用上下鍵切換選項。
因為要部署的是一個微服務架構應用棧,這里選擇Microservice application

單擊回車繼續。

3.2 Which type of gateway would you like to use?

選擇網關的類型
這是一個單選題,有2個選項,使用上下鍵切換選項。
這里選擇JHipster gateway based on Netflix Zuul

單擊回車繼續。

3.3 Enter the root directory where your gateway(s) and microservices are located

輸入需要部署的網關和業務微服務的位置
這是一個相對於docker-compose的相對路徑,默認路徑是../,這也是之前生成的網關和業務微服務以及認證微服務的位置。

單擊回車繼續。

3.4 Which applications do you want to include in your configuration?

選擇需要加入編排配置文件的微服務
這是一個多選題,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。
這里選擇全部的微服務。

單擊回車繼續。

3.5 Do you want to setup monitoring for your applications ?

選擇是否需要啟動監控組件
這是一個單選題,有3個選項,使用上下鍵切換選項。
簡單起見,選擇No

單擊回車繼續。

3.6 Enter the admin password used to secure the JHipster Registry

輸入JHipster Registry的admin賬號的密碼
默認值是admin,這也是之前啟動的JHipster Registry的密碼。

單擊回車繼續。

問答結束,開始生成工程代碼

這個過程通常需要1-2分鍾。

完成后,在目錄下看到所有生成的文件。

修改配置文件

打開docker-compose.yml文件

$ vi docker-compose
加入數據庫密碼和端口映射的配置
gateway-mysql:
    image: mysql:5
    environment:
        - MYSQL_ROOT_PASSWORD=my-secret-pw    # 加入數據庫密碼配置
    ports:
        - 32800:3306                          # 加入端口映射配置
......
......
microservice1-mysql:
    image: mysql:5
    environment:
        - MYSQL_ROOT_PASSWORD=my-secret-pw    # 加入數據庫密碼配置
    ports:
        - 32700:3306                          # 加入端口映射配置
......
......
uaa-mysql:
    image: mysql:5
    environment:
        - MYSQL_ROOT_PASSWORD=my-secret-pw    # 加入數據庫密碼配置
    ports:
        - 32900:3306                          # 加入端口映射配置
把Profile配置中的prod改成dev
gateway-app:
    image: gateway
    environment:
        - SPRING_PROFILES_ACTIVE=dev,swagger    # 如果這里是prod,改成dev

檢查所有鏡像的Tag是否和本地的鏡像一致

特別是mysql和jhipster-registry這2個鏡像的Tag,這樣避免啟動容器的時候,臨時去下載鏡像。

4 通過容器編排啟動微服務應用棧

進入docker-compose目錄,輸入命令后回車:

$ docker-compose up -d

命令行輸出所有微服務容器啟動信息

所有容器和容器內的微服務啟動,需要大概3-5分鍾。
啟動完成后,就可以訪問JHipster Registry和gateway的Web UI,默認用戶名和密碼都是admin

http://192.168.220.120:8761
http://192.168.220.120:8080

其它docker-compose命令

$ docker-compose scale microservice1=5     # 將microservice1的容器實例擴展到5個
$ docker-compose stop 			           # 停止所有編排中的容器
$ docker-compose down			           # 停止並且刪除所有編排中的容器

系列文章

JHipster生成微服務架構的應用棧(一)- 准備工作
JHipster生成微服務架構的應用棧(二)- 認證微服務示例
JHipster生成微服務架構的應用棧(三)- 業務微服務示例
JHipster生成微服務架構的應用棧(四)- 網關微服務示例
JHipster生成微服務架構的應用棧(五)- 容器編排示例


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM