springboot+docker+html+jar

昨天被我同学小胖说我写的文章就像是笔记,而不是分享,看来我写文章的技巧真的是需要提高了。

最近在研究docker容器技术如何用于自己的项目,之前就一直想学习docker,无奈琐事一大堆,再加上有时候忙着忙着就忘了。如何让一个人没有时间思考,那就让他一直忙,忙的没时间思考,忙的失去的人生的价值。

闲言碎语讲到这,我们的项目是spring boot+thymeleaf,也是spring官方推荐的搭建方式,不同于spring boot+jsp,spring boot+thymeleaf可以直接打成jar包镜像运行,而spring boot+jsp就不可以,必须是war包才可以。在项目中运用docker打包镜像,关键是gradle和DockerFile,如果你们的项目是maven的就是pom和Dockerfile。

此篇文章的前提:

  1. 你有一个可以运行的spring boot项目;
  2. win10开发环境;
  3. docker已经安装好了;

第一步,配置build.gradle:

buildscript {
    ext {
        springBootVersion = '2.0.5.RELEASE'
    }
    repositories {
        maven {url 'https://plugins.gradle.org/m2/'}
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")

        // docker
        classpath 'gradle.plugin.com.palantir.gradle.docker:gradle-docker:0.19.2'
    }
}

apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'idea'

group = 'com.qy'

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
    mavenCentral()
}

dependencies {
    compile fileTree(dir: 'lib', include: '*.jar')
    compile('org.springframework.boot:spring-boot-starter-web')
    compile('org.springframework.boot:spring-boot-starter-thymeleaf')
    compile('org.springframework.boot:spring-boot-starter-security')
    compile 'org.thymeleaf.extras:thymeleaf-extras-springsecurity4'
    compile 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:2.3.0'

    compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2'){
        exclude group: 'org.apache.tomcat', module: 'tomcat-jdbc'
    }

    //Redis
    compile ('org.springframework.boot:spring-boot-starter-data-redis')
    compile ('org.springframework.session:spring-session-data-redis')
    compile ('org.apache.commons:commons-pool2:2.0')


    compile('joda-time:joda-time:2.9.9')

    compile('org.apache.commons:commons-lang3:3.7')
    compile('org.apache.httpcomponents:httpclient:4.5.5')
    compile('commons-codec:commons-codec:1.10')
    compile('commons-io:commons-io:2.5')

    compile('com.thoughtworks.xstream:xstream:1.4.10')
    compile('dom4j:dom4j:1.6.1')

    compile('com.drewnoakes:metadata-extractor:2.10.1')
    compile('com.adobe.xmp:xmpcore:5.1.3')
    compile('org.apache.poi:poi:3.17')
    compile('com.google.zxing:core:3.3.0')

    compile('org.springframework.boot:spring-boot-starter-mail')

    runtime("org.springframework.boot:spring-boot-devtools")
    runtime('mysql:mysql-connector-java:5.1.46')
    runtime('com.zaxxer:HikariCP:2.7.9')

    testCompile('org.springframework.boot:spring-boot-starter-test')
}

apply plugin: 'com.palantir.docker'

bootJar {
    baseName = 'lql'
    version = '1.0.0'
}
docker {
    dependsOn build
    name "${project.group}/${bootJar.baseName}"
    files bootJar.archivePath
    buildArgs(['JAR_FILE': "${bootJar.archiveName}"])
}

第二步,编写DockerFile,这个文件的 From指明依赖jdk8,这样镜像在创建的时候就会自动下载jdk8惊醒,不用其他配置。COPY命令是吧本地的jar包复制到容器中,镜像一启动就会自动运行为容器,容器环境是linux系统,这些都是不需要配置的,如果你想指定linux系统,请先下载相应的镜像。ENTRYPOINT指明如何在容器中启动项目。Dockerfile文件内容如下:

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

项目结构如下

第三步,运用docker插件生成docker镜像:

第四步,打开powershell,查看镜像,运行镜像,docker run --name lql -p 8080:8080 -t com.qy/lql:

第五步,打开浏览器测试连接,http://localhost:8080/.

到此,镜像创建运行已经完毕。如果在这个过程中遇到问题,根据错误提示信息,冷静分析,应该能找到问题的所在。如有疑问,也可留言讨论。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值