乐趣区

关于spring-boot-编程思想:Spring-Boot-demo系列五Docker部署

1 概述

本文讲述了如何应用 Docker 部署 Spring Boot 利用,首先介绍了 Docker 的装置过程,接着介绍了 Docker 的一些基础知识,最初讲述了 Dockerfile 的编写以及部署过程。

2 环境

  • 服务器:aarch64 CentOS8
  • JDKOpenJDK 11
  • Docker19.03.9

3 Docker装置

(已装置了 Docker 能够跳过该局部)

因为大部分的教程都是针对 x86 架构的服务器的,这里笔者的服务器为 aarch64 架构,因而记录一下 Docker 的装置过程。

Docker装置办法次要有两种,一种是通过官网的脚本主动装置,一种是通过 yum 手动装置。

3.1 主动装置

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

curl -sSL https://get.daocloud.io/docker | sh

默认装置的是最新版本的,x86的个别都能够,但如果呈现像笔者这样的谬误:

表明 containerd.io 的版本过低,应用 yum install containerd.io 装置的话:

能够看到是 1.2.0 版本,并不合乎装置的最低要求,解决这种问题有两个方法:

  • 手动下载 rpm 包装置
  • 装置没那么新版本的Docker

因而采纳手动装置的办法,这里抉择的是第一种办法,手动下载 rpm 包进行装置。

3.2 手动装置

3.2.1 下载 rpm

能够戳这里下载 rpm 包:

抉择好版本即可,笔者抉择的是:

  • containerd.io-1.2.13-3.2.el7.aarch64.rpm
  • docker-ce-19.03.9-3.el7.aarch64.rpm
  • docker-ce-cli-19.03.9-3.el7.aarch64.rpm

3.2.2 装置

上传到服务器后,装置即可:

yum install \
containerd.io-1.2.13-3.2.el7.aarch64.rpm \
docker-ce-19.03.9-3.el7.aarch64.rpm \
docker-ce-cli-19.03.9-3.el7.aarch64.rpm \
-y

3.3 测试

先开启服务:

systemctl start docker

版本查看:

docker version

运行Hello World

docker run hello-world

4 打包

新建一个 Demo 工程,启动类如下:

@SpringBootApplication
@RestController
public class DemoApplication {@GetMapping("/test")
    public String test()
    {return "success";}

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

接着应用 Maven/Gradle 打成 JAR 包:

5 Dockerfile

5.1 对于Dockerfile

Dockerfile是一个用于组合镜像的文本文件,Docker通过读取 Dockerfile 的内容主动生成镜像,个别分为四局部:

  • 根底镜像信息
  • 维护者信息
  • 镜像操作指令
  • 容器启动指令

更多的内容请参考其余博客或者官网,上面给出一个Demo

5.2 Dockerfile示例

Demo 采纳的 Dockerfile 如下:

FROM adoptopenjdk/openjdk11:aarch64-centos-jdk-11.0.8_10

MAINTAINER XXXXX <XXX@XXX.com>

VOLUME /tmp

EXPOSE 8080

ADD demo.jar demo.jar

ENTRYPOINT ["java","-jar","demo.jar"]

上面逐行进行具体阐明。

5.2.1 指定根底镜像

FROM adoptopenjdk/openjdk11:aarch64-centos-jdk-11.0.8_10

该命令指定根底镜像,adoptaarch64 架构的 JDK11,留神如果服务器架构为x86 须要对应批改,具体能够戳这里查看:

5.2.2 维护者

MAINTAINER XXXXX <XXX@XXX.com>

该命令指定了维护者的信息,能够只写名字或者只写邮箱,组合的话须要加上<>

5.2.3 长久化目录

VOLUME /tmp

该命令指定了长久化目录,精确来说,volume的意思,这是指定 的地位,一般来说如果须要数据长久化则须要数据卷。

5.2.4 裸露端口

EXPOSE 8080

该命令裸露的是 8080 端口,因为 Spring Boot 利用默认运行在 8080 上,如果批改了 application.yaml 或者 application.properties 请对应批改端口。

5.2.5 增加命令

ADD demo.jar demo.jar

将本地文件增加到容器中,tar类型文件会主动解压,这里是将 demo.jar 增加

5.2.6 运行容器

ENTRYPOINT ["java","-jar","demo.jar"]

该命令用于配置容器的运行命令。

6 制作镜像

6.1 基本操作

先说一下容器的基本操作:

  • docker run:创立一个新容器并运行
  • docker start/stop/restart:启动 / 进行 / 重启容器
  • docker rm:删除容器
  • docker create:创立容器但不启动
  • docker ps:列出容器

镜像基本操作:

  • docker build:创立镜像
  • docker rmi:删除镜像
  • docker images:列出镜像

这里简略说一下镜像和容器的区别:

  • 镜像相当于一个模板,能够从一个镜像创立出多个容器
  • 用面向对象的思维比方,就是,镜像相当于一个类,而容器相当于一个类实例,也就是对象

晓得了一些根底命令后就能够来制作镜像了。

6.2 创立镜像

上传 Dockerfile 以及 JAR 包,新建一个目录把 JAR 以及 Dockerfile 放在同一个文件夹下,并进入该文件夹,接着创立镜像:

build build -t demo .

创立实现后能够查看镜像:

docker images

6.3 运行

docker run -d -p 8888:8080 demo

该命令示意从镜像 demo 创立一个容器并运行,将 8080 端口映射到 8888 端口上,次要防火墙须要开启 8888 端口,服务器记得配置平安组。

6.4 测试

间接输出 ip: 端口 /test 即可拜访:

7 源码

Java版:

  • Github
  • 码云
  • CODE.CHINA

Kotlin版:

  • Github
  • 码云
  • CODE.CHINA

CODE.CHINACSDN2020.09.11公布的开源代码托管平台)

退出移动版