Docker 打包 部署


Docker 打包 部署

  一貫的開場白,大家好:

  開始學習Spring Boot ,同時也再學習 Maven 自動化構建。  項目的部署環境是 Linux 服務器,Docker容器。  

  之所以寫這篇博客,是因為我在Dcoker 部署中遇到了一些問題,因為也是初學,請教了一些同事。在問題解決后,我又按照回憶,接着從頭開始了一遍,加深了一些映像。希望這篇高博客也能對大家又一定如幫助。

  溫馨提示:如果 百度爛了都查不出你想要的結果的話,多半是你該去相關的官方站點看資料了,比如 spring,  它的官網文檔還是很棒的(最少大家都這么說)。

  開始今天的正題,倆個假設:

  (1).此刻我假設你已經把你的 通過 maven  自動化構建的 java demo 打包了,就是說生成了以 jar 或者 war 結尾的包文件了。  

  (2).假設你已經成功安裝 docker 。 

  如果上面的倆個假設為True的話,那您可以接着往下看。

 

  Docker相關術語:

  (1).鏡像、容器、倉庫

  Docker的特點:

  (1).關鍵字:集裝箱、標准、隔離。

        Docker的部署實踐:

    1.創建dockerfile

    注意我提到的假設:你的jar包或者war包都已經打包成功,並且docker安裝成功。

    dockerfile 的內容如下: 

FROM azul/zulu-openjdk:8
VOLUME /home/work/springDemo
ADD springDemo-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

   FROM:基於哪個鏡像

   VOLUME:可以將本地文件夾或者其他container的文件夾掛載到container中

      ADD:將文件<src>拷貝到container的文件系統對應的路徑<dest>

   RUN:RUN命令將在當前image中執行任意合法命令並提交執行結果。命令執行提交后,就會自動執行Dockerfile中的下一個指令

   ENTRYPOINT:container啟動時執行的命令,但是一個Dockerfile中只能有一條ENTRYPOINT命令,如果多條,則只執行最后一條

   關於Dockerfile的介紹,可以查看:

https://www.dwhd.org/20151202_113538.html?lan=cn&lan=cn

 

   重點:dockerfile 和 jar包或者war包的位置

   

   注意:新創建的  Dockerfile 文件需要和  jar 的在一個文件夾下。

    2.Jar包的生成

    大家看到上圖中的.jar 的包可能會有困惑,這個包是怎么生成的呢?下面我們來看看這個包是如何生成的。

    由於我是通過maven的方式來構建項目的,所以也是通過maven的方式來的build的,當然前提依然是你的環境中安裝了 maven,具體操作我們來看看截圖。

             

    經過上面的操作后,就build 好了 jar包。   (花絮:你們知道一個用慣了windows 的人截這張圖付出了多么大的代價嗎?)

    

    3.生成鏡像

           

     shell 命令說明:重點是你要 cd 到存放Dockerfile 和 jar包或者war包所在的文件夾下面。

     命令:sudo docker build -t springbootdemo .

   注意:命令后面的  .    要帶上 。

   -t參數的含義我記不清了,你可以通過 sudo docker build --help 來查看相關函數的解釋。  springbootdemo是build的鏡像名稱。

   以上操作完成了Docker 鏡像的創建。檢驗鏡像是否創建成功,命令: sudo docker images   ,可以看到springbootdemo就是剛才創建的鏡像。

    

    4.啟動容器

    容器其實也相當與鏡像的載體。

    容器的啟動命令截圖:

    

    啟動命令:sudo docker run -d -p 8080:8080 springbootdemo

    -d -p 的參數含義我也忘卻了,大家可以查查。   8080:8080是一個端口的映射,它的具體邏輯和原理,我建議大家學習Docker中仔細看看,springbootdemo 就是我上面提到的鏡像文件。

    查看當前運行中的容器:sudo docker ps

    

    5.驗證

    驗證環節就可看看我們的  Demo是否部署成功了,如果你的jar包或者war包跟我以一樣,是web程序的話,就可以通過瀏覽器來測試。

           

  sorry,我比較懶,我只在我的web Demo中寫了一個 alert。 這就是最終的效果。

 

 

  好了,就寫到這了,如過大家對maven 自動話構建感興趣的話,給我留言,我會抽時間寫一篇針對maven構建的博客。我是百靈,如果文中有錯誤,歡迎大家指正。

  


免責聲明!

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



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