(十一)java版b2b2c社交電商spring cloud分佈式微服務-docker部署spring cloud項目

spring cloud b2b2c電子商務社交平臺源碼請加企鵝求求:一零三八七七四六二六
java

構建eureka-server鏡像成功。linux

同理構建service-hi鏡像web

  • pom文件導入同eurek-server
  • 修改下配置文件:

1、docker簡介

Docker是一個開源的引擎,能夠輕鬆的爲任何應用建立一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試經過的容器能夠批量地在生產環境中部署,包括VMs(虛擬機)、bare metal、OpenStack 集羣和其餘的基礎應用平臺。
Docker一般用於以下場景:spring

  • web應用的自動化打包和發佈;
  • 自動化測試和持續集成、發佈;
  • 在服務型環境中部署和調整數據庫或其餘的後臺應用;
  • 從頭編譯或者擴展示有的OpenShift或Cloud Foundry平臺來搭建本身的PaaS環境。

Docker 的優勢docker

    • 一、簡化程序:
      Docker 讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的 Linux 機器上,即可以實現虛擬化。Docker改變了虛擬化的方式,使開發者能夠直接將本身的成果放入Docker中進行管理。方便快捷已是 Docker的最大優點,過去須要用數天乃至數週的 任務,在Docker容器的處理下,只須要數秒就能完成。數據庫

    • 二、避免選擇恐懼症:
      若是你有選擇恐懼症,仍是資深患者。Docker 幫你 打包你的糾結!好比 Docker 鏡像;Docker 鏡像中包含了運行環境和配置,因此 Docker 能夠簡化部署多種應用實例工做。好比 Web 應用、後臺應用、數據庫應用、大數據應用好比 Hadoop 集羣、消息隊列等等均可以打包成一個鏡像部署。windows

    • 三、節省開支:
      一方面,雲計算時代到來,使開發者沒必要爲了追求效果而配置高額的硬件,Docker 改變了高性能必然高價格的思惟定勢。Docker 與雲的結合,讓雲空間獲得更充分的利用。不只解決了硬件管理的問題,也改變了虛擬化的方式。bash

    • 2、準備工做

      環境條件:oracle

    • linux系統,不建議windows
    • docker最新版本
    • jdk 1.8
    • maven3.0
    • 3、改造工程、構建鏡像

      改造eureka-server工程app

      在pom文件加上插件:

    • <build>
              <plugins>
                  <plugin>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-maven-plugin</artifactId>
                  </plugin>
                  <!-- tag::plugin[] -->
                  <plugin>
                      <groupId>com.spotify</groupId>
                      <artifactId>docker-maven-plugin</artifactId>
                      <version>0.4.3</version>
                      <configuration>
                          <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                          <dockerDirectory>src/main/docker</dockerDirectory>
                          <resources>
                              <resource>
                                  <targetPath>/</targetPath>
                                  <directory>${project.build.directory}</directory>
                                  <include>${project.build.finalName}.jar</include>
                              </resource>
                          </resources>
                      </configuration>
                  </plugin>
                  <!-- end::plugin[] -->
              </plugins>
          </build>複製代碼複製代碼

    • Spotify 的 docker-maven-plugin 插件是用maven插件方式構建docker鏡像的。

    • imageName指定了鏡像的名字,本例爲 forep/eureka-server
    • dockerDirectory指定 Dockerfile 的位置
    • 修改下配置文件:

    • resources是指那些須要和 Dockerfile 放在一塊兒,在構建鏡像時使用的文件,通常應用 jar 包須要歸入。

  • server:
      port: 8761
    eureka:
      instance:
        prefer-ip-address: true
      client:
        registerWithEureka: false
        fetchRegistry: false<br>複製代碼複製代碼

    編寫dockerfile文件:

  • FROM frolvlad/alpine-oraclejdk8:slim
    VOLUME /tmp
    ADD eureka-server-0.0.1-SNAPSHOT.jar app.jar
    #RUN bash -c 'touch /app.jar'
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
    EXPOSE 8761複製代碼複製代碼

  • docker file編寫指令:

  • FROM
docker file編寫指令:
 
FROM複製代碼複製代碼
  • FROM指令必須指定且須要在Dockerfile其餘指令的前面,指定的基礎image能夠是官方遠程倉庫中的,也能夠位於本地倉庫。後續的指令都依賴於該指令指定的image。當在同一個Dockerfile中創建多個鏡像時,可使用多個FROM指令。

  • VOLUME
  • 格式爲:

VOLUME ["/data"]複製代碼複製代碼
  • 使容器中的一個目錄具備持久化存儲數據的功能,該目錄能夠被容器自己使用,也能夠共享給其餘容器。當容器中的應用有持久化數據的需求時能夠在Dockerfile中使用該指令。

  • ADD
  • 從src目錄複製文件到容器的dest。其中src能夠是Dockerfile所在目錄的相對路徑,也能夠是一個URL,還能夠是一個壓縮包

  • ENTRYPOINT
  • 指定Docker容器啓動時執行的命令,能夠屢次設置,可是隻有最後一個有效。

  • EXPOSE
  • 爲Docker容器設置對外的端口號。在啓動時,可使用-p選項或者-P選項。

    構建鏡像

    執行構建docker鏡像maven命令:

mvn clean
mvn package docker:build複製代碼複製代碼
  • 構建eureka-server鏡像成功。

    同理構建service-hi鏡像

    • pom文件導入同eurek-server
    • 修改下配置文件:
  • eureka:
      client:
        serviceUrl:
          defaultZone: http://eureka-server:8761/eureka/ # 這個須要改成eureka-server
    server:
      port: 8763
    spring:
      application:
        name: service-hi複製代碼複製代碼
  • 電子商務社交平臺源碼請加企鵝求求:一零三八七七四六二六

做者:happywawa 連接:https://juejin.im/post/5cdd1454f265da03452c019d 來源:掘金 著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
相關文章
相關標籤/搜索