Gradle 生成spring-boot的docker images

因公司使用Docker硼端,最理想的狀況是研發(fā)提測時給的就是鏡像,這樣可避免升級包到實施環(huán)境時是錯誤的善已。

研發(fā)環(huán)境基本都是Eclipse,且在windows操作系統(tǒng)上鹏氧,而Docker是依賴Linux環(huán)境飒筑,那么首先需要做的就是在windows環(huán)境中安裝docker片吊,可參考。

  1. 基礎(chǔ)配置 windows 中的Docker使用
  2. Eclipse中安裝Gradle
  3. java代碼
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;
@Controller
@EnableAutoConfiguration
public class Application {
    @RequestMapping("/")
    @ResponseBody
    String home() {
        return "Hello World!";
    }
    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
}
  1. build.gradle
    buildscript {
       repositories {
        maven { url "http://ip:port/repository/jcenter/"}
        maven { url "http://ip:port/repository/maven-public/"}
        maven { url "http://ip:port/repository/spring-public/"}
        maven { url "http://ip:port/repository/maven-central/"}
       } 
        dependencies {
            classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.2.RELEASE")
            classpath('se.transmode.gradle:gradle-docker:1.2')
        }
    }

    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'idea'
    apply plugin: 'org.springframework.boot'
    apply plugin: 'docker'
    
    // This is used as the docker image prefix (org)
    group = 'gregturn'
     sourceSets { 
         main { 
             java.srcDir "src"
         } 
    } 
    
  jar {
    baseName = 'gs-spring-boot-docker'
    version =  '0.1.0'
    }
    
    // tag::task[]
    task buildDocker(type: Docker, dependsOn: build) {
      push = true
      applicationName = jar.baseName
      dockerfile = file('src/Dockerfile')
      doFirst {
        copy {
          from jar
          into stageDir
        }
      }
    }
// end::task[]

   bootRepackage {
       mainClass = 'Application'
    }
    repositories {
        maven { url "http://ip:port/repository/jcenter/"}
        maven { url "http://ip:port/repository/maven-public/"}
        maven { url "http://ip:port/repository/spring-public/"}
        maven { url "http://ip:port/repository/maven-central/"}
     } 

    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
    
    dependencies {
        // tag::jetty[]
        compile("org.springframework.boot:spring-boot-starter-web") {
            exclude module: "spring-boot-starter-tomcat"
        }
        compile("org.springframework.boot:spring-boot-starter-jetty")
        // end::jetty[]
        // tag::actuator[]
        compile("org.springframework.boot:spring-boot-starter-actuator")
        // end::actuator[]
        testCompile("junit:junit")
    }
  1. 編寫Dockerfile
    在src目錄下
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD gs-spring-boot-docker-0.1.0.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
  1. 設(shè)置運行時環(huán)境
    在windows環(huán)境中需設(shè)置docker的環(huán)境變量
    SET DOCKER_TLS_VERIFY=1
    SET DOCKER_HOST=tcp://192.168.99.100:2376
    SET DOCKER_CERT_PATH=C:\Users\lixr.docker\machine\machines\default
    SET DOCKER_MACHINE_NAME=default
    不設(shè)置環(huán)境變量會報如下錯誤
Caused by: org.gradle.api.GradleException: Docker execution failed
Command line [docker build -t gregturn/gs-spring-boot-docker:latest D:\workspace\SpringBoot\build\docker] returned:
An error occurred trying to connect: 
Post http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/build?buildargs=%7B%7D&cgroupparent=&cpuperiod=0&cpuquota=0&
cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels=%7B%7D&memory=0&memswap=0&rm=1&shmsize=0&
t=gregturn%2Fgs-spring-boot-docker%3Alatest&ulimits=null: open //./pipe/docker_engine: The system cannot find the file specified.
  1. gradle build
    運行前設(shè)置- task 為 buildDocker
    運行--gradle build
    執(zhí)行后結(jié)果如下:
[sts] -----------------------------------------------------
[sts] Starting Gradle build for the following tasks: 
[sts]      buildDocker
[sts] -----------------------------------------------------
Spring Boot plugin's support for Gradle 2.2.1 is deprecated. Please upgrade to Gradle 2.9 or later.
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:findMainClass
:jar
:bootRepackage
:assemble
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build
:buildDocker
Sending build context to Docker daemon 557.1 kB
Sending build context to Docker daemon 1.114 MB
Sending build context to Docker daemon 1.671 MB
Sending build context to Docker daemon 2.228 MB
Sending build context to Docker daemon 2.785 MB
Sending build context to Docker daemon 3.342 MB
Sending build context to Docker daemon 3.899 MB
Sending build context to Docker daemon 4.456 MB
Sending build context to Docker daemon 5.014 MB
Sending build context to Docker daemon 5.571 MB
Sending build context to Docker daemon 6.128 MB
Sending build context to Docker daemon 6.685 MB
Sending build context to Docker daemon 7.242 MB
Sending build context to Docker daemon 7.799 MB
Sending build context to Docker daemon 8.356 MB
Sending build context to Docker daemon 8.913 MB
Sending build context to Docker daemon  9.47 MB
Sending build context to Docker daemon 10.03 MB
Sending build context to Docker daemon 10.58 MB
Sending build context to Docker daemon 11.14 MB
Sending build context to Docker daemon  11.7 MB
Sending build context to Docker daemon 12.26 MB
Sending build context to Docker daemon 12.81 MB
Sending build context to Docker daemon 13.37 MB
Sending build context to Docker daemon 13.93 MB
Sending build context to Docker daemon 14.08 MB
Step 1 : FROM frolvlad/alpine-oraclejdk8:slim
 ---> a290f8607aef
Step 2 : VOLUME /tmp
 ---> Using cache
 ---> 940076062032
Step 3 : ADD gs-spring-boot-docker-0.1.0.jar app.jar
 ---> e73954cc8bc1
Removing intermediate container 45e68b00fb97
Step 4 : RUN sh -c 'touch /app.jar'
 ---> Running in 3feab29e4de4
 ---> 51be10b87108
Removing intermediate container 3feab29e4de4
Step 5 : ENV JAVA_OPTS ""
 ---> Running in bcf859208dd7
 ---> fdb1998eae9c
Removing intermediate container bcf859208dd7
Step 6 : ENTRYPOINT sh -c java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar
 ---> Running in 408a0f6b60f8
 ---> 497ace0d0f8d
Removing intermediate container 408a0f6b60f8
Successfully built 497ace0d0f8d
BUILD SUCCESSFUL
Total time: 30.579 secs
[sts] -----------------------------------------------------
[sts] Build finished succesfully!
[sts] Time taken: 0 min, 31 sec
[sts] -----------------------------------------------------
  1. 運行鏡像
    docker images
docker@default:~$ docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
gregturn/gs-spring-boot-docker   latest              497ace0d0f8d        12 minutes ago      195.3 MB
python                           latest              7045ed20ac61        2 weeks ago         682.7 MB
frolvlad/alpine-oraclejdk8       slim                a290f8607aef        5 weeks ago         167.2 MB

docker run -ti -p 8080:8080 497ac

  1. 訪問
    http://192.168.99.100:8080/
    顯示Hello World!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末协屡,一起剝皮案震驚了整個濱河市俏脊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肤晓,老刑警劉巖爷贫,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異补憾,居然都是意外死亡漫萄,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門盈匾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腾务,“玉大人,你說我怎么就攤上這事削饵⊙沂荩” “怎么了未巫?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長担钮。 經(jīng)常有香客問我橱赠,道長尤仍,這世上最難降的妖魔是什么箫津? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮宰啦,結(jié)果婚禮上苏遥,老公的妹妹穿的比我還像新娘。我一直安慰自己赡模,他們只是感情好田炭,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著漓柑,像睡著了一般教硫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辆布,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天瞬矩,我揣著相機與錄音,去河邊找鬼锋玲。 笑死景用,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的惭蹂。 我是一名探鬼主播伞插,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼盾碗!你這毒婦竟也來了媚污?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤廷雅,失蹤者是張志新(化名)和其女友劉穎耗美,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體榜轿,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡幽歼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了谬盐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甸私。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖飞傀,靈堂內(nèi)的尸體忽然破棺而出皇型,到底是詐尸還是另有隱情诬烹,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布弃鸦,位于F島的核電站绞吁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏唬格。R本人自食惡果不足惜家破,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望购岗。 院中可真熱鬧汰聋,春花似錦、人聲如沸喊积。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乾吻。三九已至髓梅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間绎签,已是汗流浹背枯饿。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辜御,地道東北人鸭你。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像擒权,于是被迫代替她去往敵國和親袱巨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容