使用 Docker 构建 Spring Boot Application 中简单介绍了如何使用 Docker 构建 Spring Boot Application。本文探讨如何更简单的构建 Docker 镜像。

jib 简介

Make America Great Again. – Donald Trump

大概是受 Donald Trump 的启发 🙄,Google 发布的 jib 让原本已经很简单的 Docker 镜像构建过程变得更加简单。

一图顶千言,先看 Docker 构建镜像流程

再看 Jib 构建容器镜像流程

使用

下面来介绍以下如何使用 Jib

阅读全文 »

Docker & Spring Boot

Docker 是一种 Linux 容器的实现,具有进程的轻量级资源隔离的特点,每一个容器对应操作系统中的一个进程,但是它又会有自己的网络空间、文件系统、PID 等。Docker 除了实现 Linux 容器,还使得容器具有“社会化”的属性,用户可以将容器镜像发布在 Docker Hub 与其他开发者共享、协作,类似于 Maven

Spring Boot 简化了 Spring 应用程序的开发过程,遵循约定优先配置的原则提供了各类 开箱即用(out-of-the-box) 的框架配置。另一方面,Spring Boot 还具备将代码直接构建为可执行 jar 包的能力,这个 jar 包是一个可以独立运行的部署单元。基于以上特性,现在普遍认为 Spring Boot 提供了一种快速构造微服务(Micro-Service)的能力。

Spring Boot 的运行环境非常简单,将 Spring Boot Application 打包为 Docker 镜像,对于自动化部署、运维都非常方便。

Dockerizing Spring Boot Application

使用 Docker 发布 Spring Boot Application,需要经历简单的几步,即可实现。

如有需要,可参考本文所涉及 Demo

常规操作

编写 Spring Boot Application

本文不是为了讲解如何编写 Spring Boot Application,故建议读者直接采用脚手架快速构建出一个 Spring Boot Application。

阅读全文 »

我们使用 Maven 时,基本上只会用到 mvn 这一个命令。有些童鞋可能听说过 mvnw,这个是啥?

mvnw 是 Maven Wrapper 的缩写,我们安装 Maven 时,默认情况下,系统所有项目都会使用全局安装的这个 Maven 版本。但是,对于某些项目来说,它可能必须使用某个特定的 Maven 版本,这个时候,就可以使用 Maven Wrapper,它可以负责给这个特定的项目安装指定版本的 Maven,而其他项目不受影响。

简单地说,Maven Wrapper 就是给一个项目提供一个独立的,指定版本的 Maven 给它使用。

安装 Maven Wrapper

安装 Maven Wrapper 最简单的方式是在项目的根目录(即 pom.xml 所在的目录)下运行安装命令:

1
mvn -N io.takari:maven:0.7.7:wrapper

它会自动使用最新版本的 Maven。注意 0.7.7 是 Maven Wrapper 的版本。最新的 Maven Wrapper 版本可以去官方网站查看。

如果要指定使用的 Maven 版本,使用下面的安装命令指定版本,例如 3.6.0:

1
mvn -N io.takari:maven:0.7.7:wrapper -Dmaven=3.6.0

安装后,查看项目结构:

阅读全文 »

什么是 Maven

Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information.

Apache Maven 本质是一个软件项目管理和理解工具,它提供了一种项目管理的方法,涵盖了了项目管理中常见的阶段:

  • Builds
  • Documentation
  • Reporting
  • Dependencies
  • SCMs
  • Releases
  • Distribution

安装

官网下载安装包。

基础环境

Maven 依赖 Java 环境,所以要先确保已经正确安装 JDK

通过 java -version 命令来查看是否正确安装了 JDK

1
2
3
4
PS C:\Users\fuyon> java -version
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
阅读全文 »

A sequence of elements supporting sequential and parallel aggregate operations.

Stream 的定义可以看出

  • Stream 是一组元素的集合
  • Stream 支持顺序和并行地对元素进行操作

How it work

先看示例:

1
2
3
4
5
6
7
8
public void method1() {
List<String> list = Stream.of("a", "b", "c", 1, 2, 3)
.peek(System.out::print)
.map(String::valueOf)
.sorted()
.collect(Collectors.toList());
System.out.println("\n" + JSON.toJSONString(list));
}

上述程序输出结果:

1
2
abc123
["1","2","3","a","b","c"]

通过上述例子:

  1. Stream.of() 产生一个流;
  2. peek 将所有元素进行打印;
  3. map 将所有元素转化为 String;
  4. sorted 将所有元素进行排需;
  5. collect 将所有元素聚合为一个 List。
阅读全文 »