springboot專案在docker中執行
前端時間需要把專案打包到docker中執行,於是就讓組員去探索,最後整個過程是這樣的。
首先我們做java開發,一般都是使用springboot開發,開發完成,我們需要把springboot專案打包成jar包。此時我們jar包就能在伺服器上使用 java -jar xxxx.jar 執行專案了,但是在docker中,需要把jar包在打包成映象。
我的開發環境是windows,然後是雙系統,我在任意一個資料夾,shift+滑鼠右鍵就能調出linux介面
首先我們需要編寫一個Dockerfile檔案 ,把它和springboot打包好的jar包,放到同一個資料夾下面。如果你用linux系統,就把jar包和Dockerfile檔案上傳到linux系統下,只要保證是在同一個目錄下面即可。
Dockerfile內容如下:
FROM registry.otrs365.cn/servicecool/jdk:8u241 #基礎映象,當前新映象是基於那個映象, 像這裡就是基於java 8環境 ADD diantong-IP-4.0.0-SNAPSHOT.jar diantong-IP.jar #diantong-IP-4.0.0SNAPSHOT.jar為你SpringBoot打包最終的成包名稱,別名為diantong-IP.jar EXPOSE 9081 # 這個是你專案的要暴露的埠,你專案的埠是什麼這裡就寫什麼 ENTRYPOINT ["java","-jar","/diantong-IP.jar"] #這句話相當於 java -jar diantongIP.jar
linux系統下,FROM 後面指向你docker中安裝的jdk的映象
注意,Dockerfile是沒有後綴的。
接下來就是構建映象了
在存放Dockerfile和專案jar的目錄下,執行以下的命令(注意後面有一個 . 不能少)
docker build -t diantong-ip .
這裡有一個坑,就是你jar包的名稱不能有大寫的,有大寫你在執行上面命令時也要把大寫改成小寫
等待執行完成,執行成功後docker中就多了個映象了。執行下面命令檢視你的映象:
docker images
啟動容器
-p這個屬性我這邊詳細說一下:9081:9081的意思是將我宿主機的9081埠對映到容器埠9081,我在前
面已經配置過這個埠了
docker run -d -p 9081:9081 diantong-ip
啟動成功,使用
docker ps
就能看到容器了,至此,一個springboot應用就成功放到docker中運行了。
如果需要把這個應用給你的朋友,那隻需要
docker save -o diantongip.tar diantong-ip:latest
就會得到一格diantongip.tar壓縮包,把這個壓縮包發給你的朋友
使用以下命令,就能導進他的docker裡面了
注:此文章寫於2021/08/11 若時間過長,文章內容步驟稍有偏差。
作者:天下沒有收費的bug 出處:https://www.cnblogs.com/LoveBB/ 本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須在文章頁面給出原文連結,否則保留追究法律責任的權利。