天天看點

docker應用安裝之部署Springboot項目

docker部署springboot項目分為以下2步

  1. springboot項目的JAR包生成鏡像檔案。
  2. 将鏡像檔案生成容器,并完成部署。

一、springboot項目的JAR包生成鏡像檔案

  1. 編寫Dockerfile檔案。

    執行以下指令:

    mkdir docker  #建立docker檔案夾
    cd  docker  
    vim Dockerfile #采用Dockerfile來建立images
               
    Dockerfile 中 輸入以下代碼,然後點選Esc鍵退出編輯後 輸入wq儲存檔案:
    # Docker image for springboot file run
    # VERSION 0.0.1
    # Author: goodboby
    # 基礎鏡像使用java
    FROM java:8
    # 作者
    MAINTAINER goodboby <[email protected]>
    # VOLUME 指定了臨時檔案目錄為/tmp。
    # 其效果是在主機 /var/lib/docker 目錄下建立了一個臨時檔案,并連結到容器的/tmp
    VOLUME /tmp 
    # 将jar包添加到容器中并更名為app.jar
    ADD demo-0.0.1-SNAPSHOT.jar app.jar 
    # 運作jar包
    RUN bash -c 'touch /app.jar'
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
               
    VOLUME 指定了臨時檔案目錄為/tmp。其效果是在主機 /var/lib/docker 目錄下建立了一個臨時檔案,并連結到容器的/tmp。改步驟是可選的,如果涉及到檔案系統的應用就很有必要了。/tmp目錄用來持久化到 Docker 資料檔案夾,因為 Spring Boot 使用的内嵌 Tomcat 容器預設使用/tmp作為工作目錄
    項目的 jar 檔案作為 “app.jar” 添加到容器的
               

    Dockerfile檔案結構解釋如下:一般的,Dockerfile 分為四部分:基礎鏡像資訊、維護者資訊、鏡像操作指令和容器啟動時執行。(詳見Dockerfile檔案體系結構,以下隻例舉了部分說明)

    FROM:指定基礎鏡像,要在哪個鏡像建立。

    MAINTAINER:指定維護者資訊。

    WORKDIR:指定目前工作目錄。

    EXPOSE:指定容器要打開的端口。

    ENV:定義環境變量。

    COPY :複制本地主機的 (為 Dockerfile 所在目錄的相對路徑)到容器中的。

    ADD:相當于 COPY,但是比 COPY 功能更強大,格式為 

    ADD <src> <dest>,

    該指令将複制指定的 到容器中的 。 其中 可以是Dockerfile所在目錄的一個相對路徑;也可以是一個 URL;還可以是一個 tar 檔案,複制進容器會自動解壓。

    VOLUME:挂載目錄,建立一個可以從本地主機或其他容器挂載的挂載點,一般用來存放資料庫和需要保持的資料等。

    ENTRYPOINT:配置容器啟動後執行的指令,并且不可被 docker run 提供的參數覆寫。每個 Dockerfile 中隻能有一個 ENTRYPOINT ,當指定多個時,隻有最後一個起效。

    CMD:指定啟動容器時執行的指令,每個 Dockerfile 隻能有一條 CMD 指令。如果指定了多條指令,隻有最後一條會被執行。如果使用者啟動容器時候指定了運作的指令,則會覆寫掉 CMD 指定的指令。

    ENTRYPOINT 和 CMD 的差別:ENTRYPOINT 指定了該鏡像啟動時的入口,CMD 則指定了容器啟動時的指令,當兩者共用時,完整的啟動指令像是 ENTRYPOINT + CMD 這樣。使用 ENTRYPOINT 的好處是在我們啟動鏡像就像是啟動了一個可執行程式,在 CMD 上僅需要指定參數;另外在我們需要自定義 CMD 時不容易出錯。

  2. 将springboot的jar包上傳到docker目錄(Dockerfile檔案和jar包必需放在同一個目錄),如下圖所示:
    docker應用安裝之部署Springboot項目
  3. 生成鏡像。
    # docker-demo 為鏡像名稱,注意最後一個“.”
    docker build -t docker-demo .  
               
  4. 如下圖所示,鏡像生成成功。
    docker應用安裝之部署Springboot項目