【运维系列】整合docker镜像打包
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
来打镜像包
一个可用的配置如下
<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>
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
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
# 3. Dockerfile 文件
接下需要配置我们自己的dockerfile文件,在项目根目录下,新建文件名Dockerfile
,如果路径有修改,需要调整上面pom配置中的dockerDirectory
参数
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"]
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
关于dockerfile语法,可以参考
我们上面的case,就是拉一个jdk8的运行环境,将打的jar包重命名为app.jar到指定目录,同时使用命令java -jar app.jar
来启动应用
# 4. 测试demo
提供一个最基础的demo实例
@SpringBootApplication
@RestController
public class Application {
@GetMapping(path = {"", "/"})
public String hello() {
return "hello " + UUID.randomUUID();
}
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
打包命令 mvn clean package docker:build -DskipTests=true
注意
- 打包的前提是docker已经启动了
打包成功之后,可以看到会多一个docker镜像
docker images
1
运行镜像并测试
# 运行
docker run -i -d --name ddemo -p 8080:8080 -t springboot/400-docker-demo
# 测试
curl 'http://127.0.0.1:8080'
1
2
3
4
2
3
4
# II. 其他
# 0. 项目
- 工程:https://github.com/liuyueyi/spring-boot-demo (opens new window)
- 项目: https://github.com/liuyueyi/spring-boot-demo/tree/master/spring-boot/400-docker-demo (opens new window)
# 1. 一灰灰Blog
尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
下面一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
- 一灰灰Blog个人博客 https://blog.hhui.top (opens new window)
- 一灰灰Blog-Spring专题博客 http://spring.hhui.top (opens new window)
编辑 (opens new window)
上次更新: 2021/10/15, 19:56:22
- 01
- 【基础系列】基于maven多环境配置04-25
- 03
- 【搜索系列】ES查询常用实例演示04-18