本文使用Docker部署Spring Boot項目。部署之前需要環境中已經安裝Docker和Maven(用于打包),是以本文先進行安裝Docker和Maven;接着搭建一個Spring Boot項目,使其支援Docker部署;最後進行部署和測試。
Docker運作在CentOS 7上,要求作業系統為64位,核心版本為3.10及以上。
确認本機已經安裝了滿足要求的Linux核心。使用指令<code>uname -r</code>來檢查核心版本資訊。
使用指令<code>yum install -y docker</code>安裝Docker,“-y”表示不詢問,使用預設配置進行安裝。
備注:Docker從1.13版本之後采用時間線的方式作為版本号,分為社群版CE和企業版EE。社群版是免費提供給個人開發者和小型團體使用的,企業版會提供額外的收費服務,比如經過官方測試認證過的基礎設施、容器、插件等。是以,需要将安裝指令修改為<code>yum install -y docker-ce</code>。(20201129修改)
使用下列指令:
輸入<code>docker version</code>,傳回版本資訊表明Docker安裝成功。
<code>wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz</code>
打開環境變量<code>vim /etc/profile</code>,添加如下内容:
儲存并退出:<code>:wq</code>
重新整理環境變量的配置使其生效:<code>source /etc/profile</code>
使用指令<code>mvn -v</code>進行檢視
使用<code>mvn package</code>指令進行打包,卻報錯,提示連接配接被拒絕。

解決辦法:給Maven配置阿裡雲鏡像
切換到maven安裝目錄下面,打開settings.xml檔案,在<code><mirrors></code>标簽裡面添加:
建立一個Spring Boot項目,添加一個簡單的DockerController,友善進行測試。
在 pom.xml中添加Docker鏡像名稱
添加 Docker插件:
在目錄src/main/docker下建立Dockerfile 檔案,Dockerfile 檔案用來說明如何來建構鏡像。
FROM指令指定一個已經存在的鏡像,告訴Docker後續的指令都是在這個基礎上進行的。例如:<code>FROM java:8</code>表示使用 Jdk1.8 環境為基礎鏡像進行建構鏡像。
VOLUME ,VOLUME 指向了一個/tmp的目錄,由于Spring Boot使用内置的Tomcat容器,Tomcat 預設使用/tmp作為工作目錄。這個指令的效果是:在主控端的/var/lib/docker目錄下建立一個臨時檔案并把它連結到容器中的/tmp目錄
ADD ,拷貝檔案并且重命名
ENTRYPOINT,為了縮短Tomcat 的啟動時間,添加java.security.egd的系統屬性指向/dev/urandom作為ENTRYPOINT。
将工程代碼 docker 拷貝伺服器中,進入項目路徑下進行打包測試。
打包:<code>mvn package</code>
運作:<code>java -jar target/spring-boot-docker-1.0.jar</code>
項目啟動成功,說明環境配置沒有問題,接下來可以使用Dockerfile建構鏡像。
建構Docker鏡像<code>mvn package docker:build</code>。可以看到docker鏡像建構成功,仔細看日志,會發現四個步驟和Dockerfile中的指令是一一對應的。
使用<code>docker images</code>指令檢視建構好的鏡像:
運作docker鏡像:<code>docker run -p 8080:8080 -t springboot/docker</code>
在本機浏覽器進行通路,可以看到傳回結果,說明部署成功。
完整代碼:GitHub位址
參考:Spring Boot 2.0(四):使用 Docker 部署 Spring Boot
由于部落客也是在攀登的路上,文中可能存在不當之處,歡迎各位多指教! 如果文章對您有用,那麼請點個”推薦“,以資鼓勵!