基於前兩章的docker-compose 部署Spring Cloud

概述

實現docker-compose 部署spring cloud實現一次構建處處運行,在此作個記錄html

一、安裝docker-compose

docs.docker.com/compose/ins…java

二、構建Dockerfile

FROM openjdk:8-jdk-alpine
COPY spring-cloud-admin-1.0.0-SNAPSHOT.jar app.jar
CMD java -jar app.jar
複製代碼

三、構建docker-compose 文件

一、構建過程遇到的問題

一、spring cloud 服務之間啓動順序問題

服務啓動順序解決方案linux

一、解決方案(拆分docker-compose)

因爲spring cloud config 進行配置文件管理而docker-compose 啓動時全部服務同時啓動而config還沒加載完成致使全部服務啓動失敗。git

version: '2'
services: 
  
    # 自定義服務名
    spring-cloud-eureka:
        # 總起重啓
        restart: always
        # 別名
        container_name: spring-cloud-eureka
        # 編譯DockerFile所在路徑
        build: spring-cloud-eureka
        # 端口映射
        ports:
          - 8081:8081
        # 網絡橋接
        networks: 
         - springCloud
        # 等待某服務啓動後啓動服務 
        depends_on:
         - spring-cloud-config
         
    spring-cloud-config: 
        restart: always
        container_name: spring-cloud-config
        build: spring-cloud-config
        ports:
          - 8888:8888       
        networks: 
         - springCloud
         
     
          
# 構建網絡環境 
networks: 
    springCloud: 
      driver: bridge
複製代碼

docker-compose-tow.ymlgithub

version: '2'
services: 
  
   
    spring-cloud-service: 
        restart: always
        container_name: spring-cloud-service
        build: spring-cloud-service
        ports:
          - 8082:8082             
          
          
    spring-cloud-feign: 
        restart: always
        container_name: spring-cloud-feign
        build: spring-cloud-feign
        ports:
          - 8083:8083   
          
    spring-cloud-gateway: 
        restart: always
        container_name: spring-cloud-gateway
        build: spring-cloud-gateway
        ports:
          - 8085:8085   
        
    spring-cloud-zipkin: 
        restart: always
        container_name: spring-cloud-zipkin
        build: spring-cloud-zipkin
        ports:
          - 8084:8084  
          
   
    spring-cloud-admin: 
        restart: always
        container_name: spring-cloud-admin
        build: spring-cloud-admin
        ports:
          - 8087:8087   


# 加入某個已存在的網絡環境 
networks:
  default:
    external:
      name: docker-springCloud

複製代碼
二、解決方案(使用Dockerize插件監聽服務啓動)

Dockerfile 改造spring

#依賴環境
FROM openjdk:8-jdk-alpine
#設置變量
ENV DOCKERIZE_VERSION v0.6.1
#下載插件
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
    && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
    && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
#拷貝jar文件
COPY spring-cloud-admin-1.0.0-SNAPSHOT.jar app.jar
#執行命令 -timeout 超時多久運行jar -wait 等待http地址訪問成功運行jar wait 也能夠是tcp://xxxx 
ENTRYPOINT ["dockerize", "-timeout", "5m", "-wait", "http://192.168.1.5:8888/application/dev/master", "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]
複製代碼

docker-compose.ymldocker

version: '2'
services: 
  
    # 自定義服務名
    spring-cloud-eureka:
        # 總起重啓
        restart: always
        # 別名
        container_name: spring-cloud-eureka
        # 編譯DockerFile所在路徑
        build: spring-cloud-eureka
        # 端口映射
        ports:
          - 8081:8081

         
    spring-cloud-config: 
        restart: always
        container_name: spring-cloud-config
        build: spring-cloud-config
        ports:
          - 8888:8888       

       
    spring-cloud-service: 
        restart: always
        container_name: spring-cloud-service
        build: spring-cloud-service
        ports:
          - 8082:8082             
        
          
    spring-cloud-feign: 
        restart: always
        container_name: spring-cloud-feign
        build: spring-cloud-feign
        ports:
          - 8083:8083   
        
        

    spring-cloud-gateway: 
        restart: always
        container_name: spring-cloud-gateway
        build: spring-cloud-gateway
        ports:
          - 8085:8085   
          
        
         
    spring-cloud-zipkin: 
        restart: always
        container_name: spring-cloud-zipkin
        build: spring-cloud-zipkin
        ports:
          - 8084:8084  
       
        
          
   

    spring-cloud-admin: 
        restart: always
        container_name: spring-cloud-admin
        build: spring-cloud-admin
        ports:
          - 8087:8087   
        
          

複製代碼

運行結果其餘服務都在等待config啓動bash

三、測試docker-compose 部署spring cloud

ps:注意修改spring cloud 內部的ip爲docker 容器服務名不然服務之間沒法聯通,使用服務註冊發現調用服務除外
複製代碼

附: docker-compose 命令說明網絡

相關文章
相關標籤/搜索