共计 2678 个字符,预计需要花费 7 分钟才能阅读完成。
1 概述
本文讲述了如何应用 Docker
部署 Spring Boot
利用,首先介绍了 Docker
的装置过程,接着介绍了 Docker
的一些基础知识,最初讲述了 Dockerfile
的编写以及部署过程。
2 环境
- 服务器:
aarch64 CentOS8
JDK
:OpenJDK 11
Docker
:19.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
该命令指定根底镜像,adopt
的 aarch64
架构的 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.CHINA
是 CSDN
于2020.09.11
公布的开源代码托管平台)