天天看點

用 Docker、Gradle 來建構、運作、釋出一個 Spring Boot 應用

本文示範了如何用 docker、gradle 來建構、運作、釋出來一個 spring boot 應用。

<a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">jdk 1.8+</a>

<a href="http://www.gradle.org/downloads">gradle 2.3+</a>

項目的目錄結構因符合 gradle 的約定。

在 *nix 系統下執行 <code>mkdir -p src/main/java/docker_spring_boot</code> ,生産如下結構 :

build.gradle

編寫一個簡單的 spring boot 應用 :

<code>src/main/java/com/waylau/docker_spring_boot/application.java</code>:

解釋下上面的代碼:

類用 <code>@springbootapplication</code> <code>@restcontroller</code> 辨別,可用 spring mvc 來處理 web 請求。

<code>@requestmapping</code> 将 <code>/</code> 映射到 <code>home()</code> ,并将"hello docker world" 文本作為響應。

<code>main()</code> 方法使用 spring boot 的 <code>springapplication.run()</code> 方法來啟動應用。

編譯:

運作:

建立檔案 <code>src/main/docker/dockerfile</code>:

解釋下這個配置檔案:

<code>volume</code> 指定了臨時檔案目錄為<code>/tmp</code>。其效果是在主機 <code>/var/lib/docker</code> 目錄下建立了一個臨時檔案,并連結到容器的<code>/tmp</code>。改步驟是可選的,如果涉及到檔案系統的應用就很有必要了。<code>/tmp</code>目錄用來持久化到 docker 資料檔案夾,因為 spring boot 使用的内嵌 tomcat 容器預設使用<code>/tmp</code>作為工作目錄

項目的 jar 檔案作為 "app.jar" 添加到容器的

執行建構成為 docker image:

運作 docker image

首先,你在 docker hub 要有新增賬號,且建立了相應的庫;

其次,docker 推送前,先要登入,否則報<code>unauthorized: access to the requested resource is not authorized</code>的錯誤

執行:

輸出為:

執行推送

docker hub 在國外,有時候拉取 image 極其緩慢,可以使用國内的鏡像來實作加速

擷取項目鏡像, 執行

<a href="http://spring.io/guides/gs/spring-boot-docker/">http://spring.io/guides/gs/spring-boot-docker/</a>

<a href="https://hub.docker.com/r/waylau/docker-spring-boot-gradle/">https://hub.docker.com/r/waylau/docker-spring-boot-gradle/</a>