一. 概述
参考开源项目https://github.com/xkcoding/spring-boot-demo
本Demo将简单示例将SpringBoot项目打包docker镜像运行, 提供两种打包方式, 分别是: 手动打包和maven插件打包
二. 示例
image.png2.1 Dockerfile
# 基础镜像
FROM openjdk:8-jdk-alpine
# 作者信息
MAINTAINER "wangpr 123456@qq.com"
# 添加一个存储空间
VOLUME /wpr
# 暴露8080端口
EXPOSE 8080
# 添加变量,如果使用dockerfile-maven-plugin,则会自动替换这里的变量内容
ARG JAR_FILE=./target/demo-docker.jar
# 往容器中添加jar包
ADD ${JAR_FILE} app.jar
# 启动镜像自动运行程序
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/urandom","-jar","/app.jar"]
2.2 application.yml
server:
port: 8080
servlet:
context-path: /demo
2.3 启动类
@SpringBootApplication
public class SpringBootDemoDockerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemoDockerApplication.class, args);
}
}
打包方式
手动打包
-
前往 Dockerfile 目录,打开命令行执行
$ docker build -t spring-boot-demo-docker .
-
查看生成镜像
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE spring-boot-demo-docker latest bc29a29ffca0 2 hours ago 119MB openjdk 8-jdk-alpine 97bc1352afde 5 weeks ago 103MB
-
运行
$ docker run -d -p 9090:8080 spring-boot-demo-docker
使用 maven 插件打包
-
pom.xml 中添加插件
<properties> <dockerfile-version>1.4.9</dockerfile-version> </properties> <plugins> <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>${dockerfile-version}</version> <configuration> <repository>${project.build.finalName}</repository> <tag>${project.version}</tag> <buildArgs> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> <executions> <execution> <id>default</id> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> </plugin> </plugins>
-
执行mvn打包命令,因为插件中
execution
节点配置了 package,所以会在打包的时候自动执行 build 命令。$ mvn clean package -Dmaven.test.skip=true
-
查看镜像
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE spring-boot-demo-docker 1.0.0-SNAPSHOT bc29a29ffca0 2 hours ago 119MB openjdk 8-jdk-alpine 97bc1352afde 5 weeks ago 103MB
-
运行
$ docker run -d -p 9090:8080 spring-boot-demo-docker:1.0.0-SNAPSHOT
网友评论