天天看點

使用Docker部署Spring Boot項目

本文使用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>指令進行打包,卻報錯,提示連接配接被拒絕。

使用Docker部署Spring Boot項目

解決辦法:給Maven配置阿裡雲鏡像

切換到maven安裝目錄下面,打開settings.xml檔案,在<code>&lt;mirrors&gt;</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部署Spring Boot項目

建構Docker鏡像<code>mvn package docker:build</code>。可以看到docker鏡像建構成功,仔細看日志,會發現四個步驟和Dockerfile中的指令是一一對應的。

使用Docker部署Spring Boot項目

使用<code>docker images</code>指令檢視建構好的鏡像:

運作docker鏡像:<code>docker run -p 8080:8080 -t springboot/docker</code>

在本機浏覽器進行通路,可以看到傳回結果,說明部署成功。

使用Docker部署Spring Boot項目

完整代碼:GitHub位址

參考:Spring Boot 2.0(四):使用 Docker 部署 Spring Boot

由于部落客也是在攀登的路上,文中可能存在不當之處,歡迎各位多指教! 如果文章對您有用,那麼請點個”推薦“,以資鼓勵!