带有Gradle的Docker容器分为4个步骤
您是否需要通過Java Web應用程序創建Docker映像? 您在使用Gradle嗎? 如果是這樣,那么您距Docker nivana僅4步之遙。
對于此示例,我將使用一個簡單的Spring Boot應用程序。 您可以在我的名為galoshe的Github存儲庫中找到所有源代碼。
如果您還沒有機會看到Spring Boot的實際應用,那您將大飽口福, 尤其是如果Simple和Java Web App這句話在同一句話中讓您畏縮不前。 在我認真看一下Boot之前,那肯定是我長期以來的反應。
例如,一個快速而骯臟的“ hello world”啟動應用實質上是比實際代碼更多的導入和注釋。 一探究竟:
一個簡單的Spring Boot應用程序
package com.github.aglover.galoshe;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;@RestController @Configuration @EnableAutoConfiguration @ComponentScan public class Application {public static void main(String[] args) {ApplicationContext ctx = SpringApplication.run(Application.class, args);}@RequestMapping("/")public String index() {return "Hello to you, world";} }運行此應用程序就像輸入命令一樣簡單:
$ java -jar build/libs/galoshe-0.1.0.jar該命令將啟動一個帶有請求路徑/映射的嵌入式Web容器,以返回簡單的String “ Hello to you,world”。 您可以通過application.properties文件定義此應用程序將在哪個端口上運行,如下所示:
application.properties
server.port: 8080因此,如果我使用瀏覽器并將其指向localhost:8080,我會看到行人,但是當您看到它的稱呼時,真是太可喜了。
既然已經介紹了我想作為Docker容器分發的應用程序,那么讓我通過4個簡單的步驟向您展示如何做到這一點。
請記住,但是,為了插件我在這個例子中使用使用gradle這個-泊塢窗,你需要有碼頭工人作為插件安裝彈出到docker命令。
第1步:應用一些插件
首先,要對應用程序進行Docker化,您需要使用兩個Gradle插件: docker和application 。
Transmode的gradle-docker插件實際上是2個可用于Gradle Dockering的可用插件之一。 在其他插件通過本Muschko的Gradleware是額外的功能有點更先進的,但是,我覺得Transmode插件的最簡單快捷的走了。
在我的特定示例中, application插件實際上是通過spring-boot插件自動包含的,但是,如果您不使用Boot,則需要在build.gradle文件中添加以下兩個插件:
apply plugin: 'application' apply plugin: 'docker'由于docker插件是第三方插件,因此您需要通過dependencies子句告訴Gradle如何找到它。
指定docker插件的類路徑
buildscript {repositories { mavenCentral() }dependencies {classpath 'se.transmode.gradle:gradle-docker:1.1'} }現在,您的Gradle腳本已準備好開始Docker-ing。 接下來,您需要提供一些線索,以便插件可以創建有效的Dockerfile 。
步驟2:提供一些屬性
該gradle這個-泊塢窗插件不直接創建一個泊塢窗的集裝箱-它僅僅是創建一個Dockerfile ,然后彈出到docker命令來建立形象。 因此,您需要在build.gradle文件中指定一些屬性,以便相應的Dockerfile構建一個有效的容器,該容器可以自動運行您的應用程序。
您需要提供:
- 要運行的類,即應用程序中包含main方法的類
- 目標JVM版本(默認為Java 7)
- (可選 )一個組ID,該ID饋入相應的Docker標簽。
因此,我的build.gradle定義了所有三個屬性,如下所示:
定義Docker插件的屬性
group = 'aglover' sourceCompatibility = 1.7 mainClassName = 'com.github.aglover.galoshe.Application'有關這些屬性的一些注意事項。 首先,該插件當前不支持Java 8 。 如果不指定sourceCompatibility ,你會得到的Java 7,接下來, group不需要財產; 但是,它有助于Docker標記。 例如,我項目的baseName被稱為galoshe ; 因此,當插件創建Docker映像時,它將使用模式group/name標記該映像。 因此,在我的情況下,相應的圖像被標記為aglover/galoshe 。
最后, mainClassName不會太令人驚訝-它是應用程序的鉤子。 實際上,該插件將創建一個腳本,您生成的Docker映像將在啟動時調用該腳本。 該腳本實際上將調用命令:
java -classpath your_class_path your_main_class至此,您幾乎完成了。 接下來,您需要指定任何Dockerfile指令。
步驟3:指定任何必需的Dockerfile指令
Dockerfile包含針對其創建的相應映像的專門說明。 有一些重要的 ; 但是,我的Boot應用程序僅需要一個: port ,它是通過插件的exposePort方法設置的。
因此,為了確保我的Docker容器公開application.properites文件中定義的端口8080,我將以下子句添加到build.gradle文件中:
指定端口8080
distDocker {exposePort 8080 }您可以通過插件處理的其他一些方面是: addFile產生一條ADD指令, runCommand產生一條RUN指令,最后setEnvironment產生一個ENV指令。
現在,您已完成Gradle構建。 剩下要做的就是運行您的構建并啟動映像!
步驟4:建立并執行
只要您已正確配置gradle-plugin,剩下要做的就是運行您的構建。 在這種情況下,命令就是distDocker 。
運行我的構建
$ ./gradlew distDocker首次運行此命令時,將花費一些時間,因為將下載各種圖像。 隨后的運行將很快。
構建完成后,將使用我之前提到的標簽創建圖像。 就我而言,標記將是aglover/galoshe ,通過運行images命令可以快速看到它:
列出可用的本地Docker映像
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE aglover/galoshe latest 332e163221bc 20 hours ago 1.042 GB dockerfile/java latest f9793c257930 3 weeks ago 1.026 GB隨后,我可以像這樣運行圖像:
運行我的容器
docker run 332e163221bc我自然可以轉到瀏覽器,點擊localhost:8080,對自己的圖片很漂亮感到很滿意。
當然,我需要發布此圖像供其他人使用。 盡管如此,如您所見,gradle-plugin允許我快速為Java應用程序創建Docker容器。
翻譯自: https://www.javacodegeeks.com/2014/06/docker-containers-with-gradle-in-4-steps.html
總結
以上是生活随笔為你收集整理的带有Gradle的Docker容器分为4个步骤的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 双截龙单机电脑版(双截龙电脑版下载)
- 下一篇: 电脑屏幕判断好坏如何分辨电脑的好坏