本文示範了如何用 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>