【运维系列】整合docker镜像打包

文章目录
  1. I. 整合步骤
    1. 1. 基本环境
    2. 2. pom配置
    3. 3. Dockerfile 文件
    4. 4. 测试demo
  2. II. 其他
    1. 0. 项目
    2. 1. 一灰灰Blog

SpringBoot项目整合docker,打包镜像工程演示

I. 整合步骤

1. 基本环境

本项目借助SpringBoot 2.2.1.RELEASE + maven 3.5.3 + IDEA + MAC进行开发

首先确保本机有安装docker,对于docker基本知识点,可以参考

2. pom配置

创建一个基本的SpringBoot项目之后,关键是设置pom.xml文件,我们主要借助docker-maven-plugin来打镜像包

一个可用的配置如下

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
40
41
42
43
44
45
<artifactId>400-docker-demo</artifactId>

<properties>
<docker.prefix>springboot</docker.prefix>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<mainClass>com.git.hui.boot.docker.Application</mainClass>
</configuration>
</plugin>

<!--加入maven插件 docker-maven-plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<!--镜像仓库源-->
<imageName>${docker.prefix}/${project.artifactId}</imageName>
<!--docker配置文件的路径-->
<dockerDirectory>./</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>

3. Dockerfile 文件

接下需要配置我们自己的dockerfile文件,在项目根目录下,新建文件名Dockerfile,如果路径有修改,需要调整上面pom配置中的dockerDirectory参数

1
2
3
4
5
6
7
8
9
10
11
12
13
FROM openjdk:8-jdk-alpine as builder
MAINTAINER yihui

# 创建工作目录
RUN mkdir -p /home/yihui/workspace/app
# 将jar拷贝过去
COPY /target/400-docker-demo-0.0.1-SNAPSHOT.jar /home/yihui/workspace/app/app.jar
# 将我们预期的文件拷贝过去
COPY /readme.md /home/yihui/workspace/app/readme.md
# 指定工作目录
WORKDIR /home/yihui/workspace/app
# 运行jar
ENTRYPOINT ["java", "-jar", "app.jar"]

关于dockerfile语法,可以参考

我们上面的case,就是拉一个jdk8的运行环境,将打的jar包重命名为app.jar到指定目录,同时使用命令java -jar app.jar来启动应用

4. 测试demo

提供一个最基础的demo实例

1
2
3
4
5
6
7
8
9
10
11
12
13
@SpringBootApplication
@RestController
public class Application {

@GetMapping(path = {"", "/"})
public String hello() {
return "hello " + UUID.randomUUID();
}

public static void main(String[] args) {
SpringApplication.run(Application.class);
}
}

打包命令 mvn clean package docker:build -DskipTests=true

注意

  • 打包的前提是docker已经启动了

打包成功之后,可以看到会多一个docker镜像

1
docker images

运行镜像并测试

1
2
3
4
# 运行
docker run -i -d --name ddemo -p 8080:8080 -t springboot/400-docker-demo
# 测试
curl 'http://127.0.0.1:8080'

II. 其他

0. 项目

1. 一灰灰Blog

尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

下面一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

一灰灰blog


打赏 如果觉得我的文章对您有帮助,请随意打赏。
分享到