天天看點

Docker Compose - 編排微服務項目Docker Compose - 編排微服務項目

Docker Compose - 編排微服務項目

目錄

  • Docker Compose - 編排微服務項目
    • 1. 服務編排
      • 1.1 概念
      • 1.2 Docker Compose
        • 1.2.1 安裝 Docker Compose
        • 1.2.2 解除安裝 Docker Compose
      • 1.3 編排 nginx + springboot
      • 1.4 編排微服務項目
        • 1.4.1 編排賬單微服務

測試環境:

CentOS 7

1. 服務編排

1.1 概念

微服務架構的應用系統中一般包含若幹個微服務,每個微服務一般都會部署多個執行個體,如果每個微服務都要手動啟動停止,維護的工作量會很大。來看下我們日常工作:

  • 要從

    Dockerfile build image

    或者去

    dockerhub

    拉取

    image

  • 要建立多個

    container

  • 要管理這些

    container

    (啟動 / 停止 / 删除)

通過服務編排可以大量簡化上面的工作

服務編排:按照一定的業務規則批量管理容器

1.2 Docker Compose

  • Docker Compose

    是一個編排多容器分布式部署的工具,提供指令集中管理容器化應用的完整開發周期,包括服務建構、啟動和停止。

使用步驟:

  1. 利用

    Dockerfile

    定義運作環境鏡像
  2. 使用

    docker-compose.yml

    定義組成應用的各服務
  3. 運作

    docker-compose up

    啟動應用

1.2.1 安裝 Docker Compose

Docker Compose - 編排微服務項目Docker Compose - 編排微服務項目
# Compose目前已經完全支援Linux、Mac OS和Windows,在我們安裝Compose之前,需要先安裝Docker。下面我們以編譯好的二進制包方式安裝在Linux系統中。
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 設定檔案可執行權限
chmod +x /usr/local/bin/docker-compose
# 檢視版本資訊
docker-compose -version
           

1.2.2 解除安裝 Docker Compose

# 二進制包方式安裝的,删除二進制檔案即可
rm /usr/local/bin/docker-compose
           

1.3 編排 nginx + springboot

注意:本

SpringBoot

項目與文章 Docker - 入門篇 中的案例二相同

需求:使用

nginx

反向代理到

springboot

應用

  1. 建立

    docker-compose

    目錄
mkdir ~/docker-compose
cd ~/docker-compose
           
  1. 編寫

    docker-compose.yml

    檔案
version: '3'
services:
  nginx:
  	image: nginx
  	ports:
    	- 80:80
  	links:
    	- app
  	volumes:
    	- ./nginx/conf.d:/etc/nginx/conf.d
	app:
    image: app
    expose:
		- "8080"
           
  1. 建立

    ./nginx/conf.d

    目錄
mkdir -p ./nginx/conf.d
           
  1. ./nginx/conf.d

    目錄下 編寫

    app.conf

    檔案
server {
    listen 80;
    access_log off;
    location / {
        proxy_pass http://app:8080/hello;
	} 
}
           
  1. ~/docker-compose

    目錄下 使用

    docker-compose

    啟動容器
docker-compose up -d # -d 表示守護模式啟動
docker-compose down # 容器銷毀
           
  1. 測試通路
Docker Compose - 編排微服務項目Docker Compose - 編排微服務項目
http://192.168.2.*
           
Docker Compose - 編排微服務項目Docker Compose - 編排微服務項目

1.4 編排微服務項目

需求:使用

docker-compose

對賬單項目進行編排。

  • 在本次實戰中,我們預設部署了

    mysql

    應用,故此處專注于微服務項目的部署(未編寫明确的啟動順序)。

MySQL應用部署 / 項目相關檔案 / 配置及

jar

包生成:參考文章 Docker實戰 - 部署微服務項目

項目結構:

  • bill-eureka

    :注冊中心,端口号 - 9093
  • bill-config

    :配置微服務,端口号 - 10020
  • bill-gateway

    :網關微服務,端口号 - 10010
  • bill-service

    :賬單微服務,端口号 - 9091

1.4.1 編排賬單微服務

  1. 建立一個新的目錄 -

    docker-bill

  2. docker-bill

    目錄下分别建立

    bill-eureka

    bill-config

    bill-gateway

    bill-servuce

    目錄,并且将相應的

    jar

    封包件放在相應的目錄下
  3. 在每個微服務目錄下建立一個

    Dockerfile

    ,内容如下,以

    bill-eureka

    服務作為參照,其它微服務都類似修改:
FROM java:8
MAINTAINER murphy <[email protected]>

ADD eureka-server.jar eureka.jar
CMD ["java", "-jar", "eureka.jar"]
           
Docker Compose - 編排微服務項目Docker Compose - 編排微服務項目

4. 在

docker-bill

目錄下建立微服務編排檔案

docker-compose-app.yml

,内容如下:

version: '3'
services:
  bill-eureka:
    image: docker-bill/bill-eureka:0.0.1 # 指定鏡像名稱
    build: ./bill-eureka # 指定Dockfile所在路徑
    container_name: bill-eureka # 指定啟動容器名稱
    ports:
      - 9093:9093
    restart: always # 關機或者重新開機機器時,docker同時重新開機容器
  bill-config:
    image: docker-bill/bill-config:0.0.1
    build: ./bill-config
    container_name: bill-config
    ports:
      - 10020:10020
    restart: always
  bill-gateway:
    image: docker-bill/bill-gateway:0.0.1
    build: ./bill-gateway
    container_name: bill-gateway
    ports:
      - 10010:10010
    restart: always
  bill-service:
    image: docker-bill/bill-service:0.0.1
    build: ./bill-service
    container_name: bill-service
    ports:
      - 9091:9091
    restart: always
           

總體結構

Docker Compose - 編排微服務項目Docker Compose - 編排微服務項目

docker-bill

├── docker-compose-app.yml

└── bill-config

├──── Dockerfile

└──── config-service.jar

└── bill-eureka

├──── Dockerfile

└──── eureka-server.jar

└── bill-gateway

├──── Dockerfile

└──── gateway-server.jar

└── bill-service

├──── Dockerfile

└──── bill-service.jar

注意:

jar

包名稱自定義

  1. docker-bill

    目錄下,啟動所有微服務容器,執行如下指令:
docker-compose -f docker-compose-app.yml up -d  
           

運作截圖

Docker Compose - 編排微服務項目Docker Compose - 編排微服務項目

測試通路

Docker Compose - 編排微服務項目Docker Compose - 編排微服務項目

6. 銷毀所有微服務容器,執行如下指令:

docker-compose -f docker-compose-app.yml down
           

運作截圖

Docker Compose - 編排微服務項目Docker Compose - 編排微服務項目

至此,成功通過Docker Compose實作微服務項目的編排。