如何使用docker部署springcloud???


如何使用docker部署springcloud???

springcloud 必須基於 springboot 項目來開發, 這里講解springboot項目的部署, springcloud項目也是同理.
使用Dockerfile形式可部署.
示例:

FROM frolvlad/alpine-oraclejdk8
VOLUME /usr/test
ADD test.jar app.jar
EXPOSE 8001
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

FROM:
Docker是基於鏡像的部署,幸運的是Docker官方和開發者們為我們維護了許多高質量的Docker鏡像,而基於這些
鏡像我們能做出符合自己需求的鏡像.此處的FROM意思是我們即將要創建的鏡像的基礎鏡像的名字,這個名字可以是
我們本地已有的鏡像, 也可以是Docker Hub上的鏡像,如果是Docker Hub上的鏡像,此時docker daemon會為我們自動
下載該鏡像. 還有一個要注意的點, 如果是本地鏡像要加上版本(鏡像名:版本號),否則默認版本號為latest.

VOLUME:
Docker的運行相當於是操作系統的一個進程,但是該進程又與普通進程有些許不同,因為該進程內部維護着的是我們的一個微服務的完整結構,
而往往項目中需要運行的微服務都有記錄日志或者其他寫出文件的功能,設想一下這樣的情況:
我們的微服務現在正在運行,但是訪問量突然增大, 開發人員又沒有關注到這一點, 沒有進行水平擴展,這時候很有可能這個微服務就down了,
而這個微服務一旦down了之后,出現的情況就是整個容器的status就變成了Exited,而此時如果將容器刪除,容器中的所有數據卷會跟隨容器
一起刪除,因為這些數據卷是臨時的, 此處的映射路徑為 /usr/test .這是我們自定義的映射路徑,后續要演示記錄日志的功能.
當然也可以指定/tmp其效果都是在主機的/var/lib/docker/volumes目錄下創建一個臨時文件,並鏈接到容器的鏈接路徑.
而為什么鏈接到容器的/tmp目錄呢?因為SpringBoot使用的內嵌Tomcat容器默認使用/tmp作為工作目錄.
當然此處的/tmp也可以變成你的日志記錄文件夾,這樣就可以在本地實時查看日志記錄了.

ADD:
將我們自身的項目admin.jar 作為 app.jar 加入到容器中.

EXPORT:
該命令用於聲明在運行時容器提供服務的端口. 注意:這只是一個聲明,運行時並不會因為該聲明就打開相應的端口.
該指令的作用是幫助鏡像使用者理解該鏡像服務的守護端口;其次是當運行時使用隨機映射時(即run命令的-P參數),
會自動映射EXPORT的端口.

ENTRYPOINT:
該命令制定Docker容器啟動時執行的命令,可多次設置,但只有最后一條會生效.

["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]這條命令中可能部分讀者會對
-Djava.security.egd=file:/dev/./urandom 這條命令有疑惑,這是因為linux中和windows中取隨機數時的參考策略不同,
linux默認的隨機數會被取完,導致返回-1,而制定/dev/./urandom這個取隨機數的策略時,當隨機數取完之后會返回隨機數,
不至於影響業務.



https://blog.csdn.net/qq_30770095/article/details/79648665

 


免責聲明!

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



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