一灰灰blog 一灰灰blog
首页
  • InfluxDB
  • MongoDB
  • MySql
  • 基础系列
  • DB系列
  • 搜索系列
  • MQ系列
  • WEB系列
  • 中间件
  • 运维
  • SpringSecurity
  • SpringCloud
  • QuickAlarm
  • QuickCrawer
  • QuickFix
  • QuickMedia
  • QuickSpi
  • QuickTask
  • 高可用
  • 分类
  • 标签
  • 归档
  • 收藏
  • 关于
GitHub (opens new window)

一灰灰blog

资深搬运工
首页
  • InfluxDB
  • MongoDB
  • MySql
  • 基础系列
  • DB系列
  • 搜索系列
  • MQ系列
  • WEB系列
  • 中间件
  • 运维
  • SpringSecurity
  • SpringCloud
  • QuickAlarm
  • QuickCrawer
  • QuickFix
  • QuickMedia
  • QuickSpi
  • QuickTask
  • 高可用
  • 分类
  • 标签
  • 归档
  • 收藏
  • 关于
GitHub (opens new window)
  • 基础系列

  • DB系列

  • 搜索系列

  • MQ系列

  • WEB系列

  • 中间件

  • 运维

    • Docker

      • 【运维系列】整合docker镜像打包
        • I. 整合步骤
          • 1. 基本环境
          • 2. pom配置
          • 3. Dockerfile 文件
          • 4. 测试demo
        • II. 其他
          • 0. 项目
          • 1. 一灰灰Blog
  • SpringSecurity

  • SpringCloud

  • Spring系列
  • 运维
  • Docker
一灰灰
2021-03-04

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

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

# I. 整合步骤

# 1. 基本环境

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

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

  • Centos安装docker与使用说明 (opens new window)
  • Docker 常用命令速查手册 (opens new window)

# 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

# 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

关于dockerfile语法,可以参考

  • Docker Dockerfile语法说明 (opens new window)

我们上面的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

打包命令 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

# 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)

一灰灰blog

编辑 (opens new window)
#Docker
上次更新: 2021/10/15, 19:56:22
【中间件】Zookeeper从0到1实现一个分布式锁
【SpringSecurity系列】起源篇(零)

← 【中间件】Zookeeper从0到1实现一个分布式锁 【SpringSecurity系列】起源篇(零)→

最近更新
01
【基础系列】基于maven多环境配置
04-25
02
【WEB系列】内嵌Tomcat配置Accesslog日志文件生成位置源码探索
04-24
03
【搜索系列】ES查询常用实例演示
04-18
更多文章>
Theme by Vdoing | Copyright © 2017-2022 一灰灰Blog
MIT License | 鄂ICP备18017282号 |
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×