Docker课堂实验手册(四) - 构建自己的镜像

在本次实验的目的是学习将一个SpringBoot的应用打包并构建到镜像。

构建SpringBoot应用

  1. 在 IDEA 中构建一个 Maven 类型的项目, 命名为 hw-bmi-service-01。

  2. 将一下代码拷贝到 pom.xml 文件中并覆盖原理的文件内容。

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.huawei.service</groupId>
<artifactId>hw-bmi-service-01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>hw-bmi-service-01</name>
<description>Demo project for Spring Boot</description>

<properties>
<java.version>1.8</java.version>
<docker.image.prefix>springboot</docker.image.prefix>
</properties>

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

<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

保存,项目会自动下载依赖库。

  1. 在源码中新增一个包(package),命名为: com.huawei.service.bmi.api

在包: com.huawei.service.bmi.api 中新增一个类, 命名为: OkApi

  1. 修改源代码如下:
1
2
3
4
5
6
7
8
9
@RestController
public class OkApi {

@RequestMapping("/ok")
public String ok() {
return "ok";
}

}
  1. 在IDEA 中运行程序,并通过浏览器访问服务。

  2. 在终端中执行 mvn clean package 命令进行打包。

构建包含应用的Docker镜像

  1. 在 pom 中加入以下 plugin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<!-- Docker maven plugin —>

保存,项目会自动更新依赖库

  1. 在 src/man 目录下新建一个名为 docker 的目录, 然后新增一个名为 Dockerfile 的文件,内容为:
1
2
3
4
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD hw-bmi-service-01-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
  1. 执行 mvn package docker:build 命令,将应用打包发布到 docker 容器中。

  2. 运行一下命令启动微服务

1
docker run -p 8080:8080 -t springboot/hw-bmi-service-01

本文标题:Docker课堂实验手册(四) - 构建自己的镜像

文章作者:晨星

发布时间:2019年09月06日 - 20:09

最后更新:2020年05月28日 - 16:05

原始链接:https://www.mls-tech.info/docker/docker-practice-manual-4/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。