SpringBoot項目通過maven打成jar包后;如何利用Docker打成鏡像
一、鏡像、容器相關知識的概述
-
Docker 鏡像
docker鏡像是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,
還包含了一些為運行時準備的一些配置參數(如匿名卷、環境變量、用戶等);
鏡像不包含任何動態數據,其內容在構建之后也不會被改變。
-
Docker 容器
Docker 容器是一個開源的應用容器引擎,讓開發者可以以統一的方式打包他們的應用以及依賴包到一個可移植的容器中,
然后發布到任何安裝了docker引擎的服務器上(包括流行的Linux機器、windows機器),
也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app)。
幾乎沒有性能開銷,可以很容易地在機器和數據中心中運行。最重要的是,他們不依賴于任何語言、框架包括系統。
-
DockerFile
1.什么是dockerfile
Dockerfile是一個包含用于組合映像的命令的文本文檔。可以使用在命令行中調用任何命令。 Docker通過讀取Dockerfile中的指令自動生成映像。 docker build命令用于從Dockerfile構建映像。 可以在docker build命令中使用-f標志指向文件系統中任何位置的Dockerfile。 例:docker build -f /path/to/a/Dockerfile
2.dockerfile基本結構
Dockerfile 一般分為四部分:基礎鏡像信息、維護者信息、鏡像操作指令和容器啟動時執行指令,
’#’ 為 Dockerfile 中的注釋。
3.docker文件說明
Docker以從上到下的順序運行Dockerfile的指令。為了指定基本映像,第一條指令必須是FROM。
一個聲明以#字符開頭則被視為注釋。
可以在Docker文件中使用RUN,CMD,FROM,EXPOSE,ENV等指令。
dockerfile 指令圖解:

二、上傳jar包并創建DockerFile
1.利用xftp連接自己的服務器將打包好的項目上傳到指定服務器目錄上

[root@songweipeng java]# ll total 141716 -rw-r--r-- 1 root root 206 Sep 22 11:40 Dockerfile -rw-r--r-- 1 root root 145106991 Sep 22 11:14 gcdp-market-bid-process-service-1.0.0-SNAPSHOT.jar
2.編寫dockerFile: vim DockerFile
# 基于哪個鏡像,需要用一個已有的鏡像做載體來創建,這里我使用的java8鏡像,如果大家的docker鏡像中沒有java8,它就會自動去下載 FROM java:8 # 將本地文件夾掛載到當前容器,指定/songwp/project/java目錄并持久化到Docker數據文件夾,因為Spring Boot使用的內嵌Tomcat容器默認使用/tmp作為工作目錄 VOLUME /songwp/project/java # 添加自己的項目到 gcdp-market-bid-process-service-1.0.0-SNAPSHOT.jar中這里我是取了gcdp-market-bid-process-service.jar的名字,這個名字可以隨便取的,只要后面幾行名字和這個統一就好了 ADD gcdp-market-bid-process-service-1.0.0-SNAPSHOT.jar gcdp-market-bid-process-service.jar # 開放9601端口 EXPOSE 9601 # ENTRYPOINT指定容器運行后默認執行的命令 CMD java -jar gcdp-market-bid-process-service.jar
3.構建鏡像
docker build -f ./Dockerfile -t gcdp-market-bid-process-service:latest .

4.運行并查看日志
# 運行鏡像 docker run -d -p 9601:9601 gcdp-market-bid-process-service:latest # 查看運行容器的id和狀態 docker ps -a # 查看容器日志 docker logs 2044230149c1

古今成大事者,不唯有超世之才,必有堅韌不拔之志!

浙公網安備 33010602011771號