用 Docker 构建 SpringBoot 应用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| buildscript { ext { springBootVersion = '2.0.0.RELEASE' } repositories { maven { url "https://plugins.gradle.org/m2/" } mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") classpath("gradle.plugin.com.palantir.gradle.docker:gradle-docker:0.19.2") } }
apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' apply plugin: 'com.palantir.docker'
group = 'cn.com.hellowood' sourceCompatibility = 1.8 version = '1.0.0-SNAPSHOT'
repositories { mavenCentral() }
dependencies { compile('org.springframework.boot:spring-boot-starter-web') testCompile('org.springframework.boot:spring-boot-starter-test') }
docker { name "${project.group}/${jar.baseName}" files jar.archivePath buildArgs(['JAR_FILE': "${jar.archiveName}"]) }
|
1 2 3 4 5
| FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE ADD ${JAR_FILE} app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
|
此时会生成Docker镜像
1 2 3 4
| $ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE cn.com.hellowood/docker latest 94eefe321973 4 minutes ago 118MB
|
1
| docker run --name docker -p 8080:8080 cn.com.hellowood/docker
|
此时可以在控制台看到应用的启动日志,项目启动之后可以访问http://localhost:8080,和本地启动应用访问一致