本指南将引导您完成构建用于运行Springboot应用程序的Docker镜像的过程。
Docker是一个Linux容器管理工具包,允许用户发布容器镜像并使用其他人发布的镜像。Docker镜像是运行容器化进程的一个方法,在本指南中,我们将为一个简单的Springboot应用程序构建一个镜像。
我利用业余时间,翻译了Spring官网的例子,方便中文不好的同学,将陆续发到头条上,欢迎大家关注,也可以上我个人BLOG:itmanclub.com,上面有已经翻译过的。
程序结构
└── src └── main └── java └── hello
pom.xml
<?xml version="1.0" encoding="UTF-8"?>4.0.0org.springframework gs-spring-boot-docker 0.1.0org.springframework.boot spring-boot-starter-parent 2.1.6.RELEASE1.8org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test testorg.springframework.boot spring-boot-maven-plugin
Spring Boot将会你做如下的事:
- 将 classpath 里面所有用到的jar包构建成一个可执行的 JAR 文件,方便执行你的程序
- 搜索public static void main()方法并且将它当作可执行类
- 根据springboot版本,去查找相应的依赖类版本,当然你可以定义其它版本。
创建Application
src/main/java/hello/Application.java
package hello;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@SpringBootApplication@RestControllerpublic class Application { @RequestMapping("/") public String home() { return "Hello Docker World"; } public static void main(String[] args) { SpringApplication.run(Application.class, args); }}
现在我们可以在没有Docker容器的情况下运行应用程序(即在操作系统中)。
如果使用Gradle,请执行:
./gradlew build && java -jar build/libs/gs-spring-boot-docker-0.1.0.jar
如果使用Maven,请执行:
./mvnw package && java -jar target/gs-spring-boot-docker-0.1.0.jar
然后访问 localhost:8080 会看到 "Hello Docker World"的信息。
把这个应用程序容具化
Docker有一个简单的“Dockerfile”文件格式,用于指定镜像的“层级”。那么让我们继续在我们的SpringBoot项目中创建一个Dockerfile:
Dockerfile
FROM openjdk:8-jdk-alpineVOLUME /tmpARG JAR_FILECOPY ${JAR_FILE} app.jarENTRYPOINT ["java