SpringBoot 整合 Docker
最近备忘录新加的东西倒是挺多的,但到了新环境水土不服没动力去整理笔记
1. Demo Project
首先准备一个简单的项目,用来部署到 Docker 主机上,并且能验证该项目是否成功运行
1.1 接口准备
准备一个测试接口,用于校验 Docker 部署是否成功
@RestController
@RequestMapping("/")
public class HelloController {
@GetMapping("/hello")
public String helle() {
return "Hello World";
}
}
1.2 配置准备
在 application.yml 文件中添加 Docker 宿主机地址,方便统一管理(该功能需要安装依赖插件)
server:
port: 8080
spring:
application:
name: docker-deploy-test
docker:
host: http://xxx.xxx.xxx.xxx:2375
2. Docker 开启远程连接
Docker 也是 Client/Serve 架构(dameon守护进程),其默认只能本地访问, 所以得设置成可外网访问我们才能部署项目到 Docker 上
1.1 修改配置文件
在 Docker 宿主机上编辑配置,添加下面一行配置(意思是任何地址都能访问 2375 端口)
$vim /usr/lib/systemd/system/docker.service
# ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock
1.2 刷新配置、重启
$systemctl daemon-reload
$systemctl restart docker
1.3 认证登录
直接开放 2357 端口,那么任何人都可以往 Docker 宿主机推送东西,笔者当初就被推送了挖矿的镜像,主机卡死登不上去,后来只能无奈重装系统镜像。Docker支持使用 SSL 证书登录,如果在外网环境请务必使用 SSL 登录(笔者记录了 OpenSSL 的笔记 ---- 用于认证,还没来得及整理)
3. IDEA 安装 Docker 插件
笔者 2019 版的 IDEA 已经默认集成了 Docker 插件,不需要再次安装。只需把远程主机地址和端口配上让 IDEA 连接 ,最后验证是否连接上远程 Docker 主机即可

这里新建一个 Docker,填上主机地址会自动连接,显示 Connection successful 则表示 IDEA 连上宿主机了
4. Maven 添加 Docker 插件
上一步的 IDEA 插件可以构建镜像并部署了,还能管理 Docker。但笔者是 maven 插件 和 IDEA 插件并用,能够方便构建程序和部署
<!-- docker 插件 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<!-- 绑定 docker:build 到 maven 的 package 生命周期 -->
<executions>
<execution>
<id>docker-build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<!-- 插件的配置 -->
<configuration>
<!-- 构建的镜像的名字 :标签 -->
<imageName>${project.artifactId}:${project.version}</imageName>
<!-- 存放dockerfile的路径 -->
<dockerDirectory>${project.basedir}</dockerDirectory>
<!-- docker Host 地址,用插件在 initialize 阶段从 application.yml 解析 -->
<dockerHost>${docker.host}</dockerHost>
<!-- SSL 认证证书地址,若开启 SSL 登录 -->
<!-- <dockerCertPath></dockerCertPath> -->
<resources>
<resource>
<!-- 使用什么资源来构建镜像(就是jar包),以及将镜像推送到容器的那个目录下 -->
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
5. 编写Dockerfile
创建 Dockerfile 文件,填入下面的内容,然后将其放入到项目的根目录
FROM openjdk:8-jdk-alpine
MAINTAINER [author] [Howl@email.com]
ARG JAR_FILE=/target/*.jar
COPY ${JAR_FILE} app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]

6. 打包项目
在 Maven 插件中绑定了 Package 与 Docker:build 的执行过程,即把项目打包成 jar 之后会自动执行 Dockr:build 来构建镜像并发布到远程 Docker 宿主机上(若项目较大,那么等待镜像推送到 Docker 宿主机上的时间会较长)

7. 创建容器
在 IDEA 的插件中可以管理 Docker,点开右下角 services 里面可以看到连接上的 Docker 里有刚才构建的镜像,然后我们可以选择这个镜像右键来创建容器
在弹出框里面填入要创建的容器的名字,以及容器映射的端口,最后点击 Run,等待容器启动即可。启动完成后可以在 IDEA 的插件里看到新建的容器,点击可以查看容器的详情

8. 校验部署
使用宿主机的 IP 地址或域名来访问刚才发布的测试接口

SpringBoot 整合 Docker的更多相关文章
- (转) SpringBoot非官方教程 | 第二十四篇: springboot整合docker
这篇文篇介绍,怎么为 springboot程序构建一个Docker镜像.docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的 ...
- springboot整合docker部署(两种构建Docker镜像方式)--2019-3-5转
原文:https://www.cnblogs.com/shamo89/p/9201513.html 项目结构 package hello; import org.springframework.boo ...
- SpringBoot非官方教程 | 第二十四篇: springboot整合docker
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot24-docker/ 本文出自方志朋的博客 这篇文 ...
- springboot整合docker部署(两种构建Docker镜像方式)
项目结构 package hello; import org.springframework.boot.SpringApplication; import org.springframework.bo ...
- springboot整合docker部署
环境安装 首先,需要安装Docker(例如:docker for windows) 下载地址:https://download.docker.com/win/stable/Docker%20for%2 ...
- 微服务深入浅出(11)-- SpringBoot整合Docker
添加Dockerfile 在目录src/main/resources目录下店家Dockerfile文件: From java MAINTAINER "Eric"<eric.l ...
- SpringBoot28 RabbitMQ知识点、Docker下载RabbitMQ、SpringBoot整合RabbtiMQ
1 RabbitMQ知识点 1.1 整体架构图 消息生产者将消息投递到exchange中,exchange会以某种路由机制将生产者投递的消息路由到queue中,消息消费者再从queue中获取消息进行消 ...
- springboot与docker整合
一.springboot与docker整合 a.创建Dockerfile FROM java MAINTAINER "Wing"<1561815137@qq.com> ...
- Springboot整合MongoDB的Docker开发,其它应用也类似
1 前言 Docker是容器开发的事实标准,而Springboot是Java微服务常用框架,二者必然是会走到一起的.本文将讲解如何开发Springboot项目,把它做成Docker镜像,并运行起来. ...
随机推荐
- 制作python程序windows安装包(飞机大战源码)
本文以飞机大战源码为例: 1.首先使用pyinstaller -w xxx.py打包 -w的意思是不显示命令行:飞机大战源码由多个.py文件以及一些图片,音乐文件组成,我们将main.py打包, ...
- 51nod1836-战忽局的手段【期望dp,矩阵乘法】
正题 题目连接:http://www.51nod.com/Challenge/Problem.html#problemId=1836 题目大意 \(n\)个点\(m\)次随机选择一个点标记(可以重复) ...
- 用Fiddler抓不到https的包?因为你姿势不对!往这看!
前言 刚入行测试的小伙伴可能不知道,Fiddler默认抓http的包,如果要抓https的包,是需要装证书的!什么鬼证书?不明白的话继续往下看. Fiddler 抓取 https 数据 第一步:下载 ...
- 智汀家庭云-开发指南Golang:设备模块
1.品牌 品牌指的是智能设备的品牌,SA通过插件的形式对该品牌下的设备进行发现控制.理论上来说一个品牌对应一个插件服务.您可以通过项目 根目录下的品牌查看SA支持的品牌.关于插件服务的详细信息可以参考 ...
- struct结构体大小的计算(内存对齐)
本次实验环境 环境1:Win10, QT 5.12 一. 背景 当普通的类型无法满足我们的需求的时候,就需要用到结构体了.结构体可衍生出结构体数组,结构体还可以嵌套结构体,这下子数据类型就丰富多彩了, ...
- JVM学习笔记——GC垃圾收集器
GC 垃圾收集器 Java 堆内存采用分代回收算法,因此 JVM 针对新生代和老年代提供了多种垃圾收集器. 1. Serial 收集器 Serial 收集器是单线程收集器,采用复制算法. 是最基本的垃 ...
- java语言程序设计与数据结构(基础篇)第二章答案
答案为本人自己求解,若有错误,还望海涵并及时告知.如有雷同,纯属巧合. 2.1 import java.util.Scanner; public class Welcome { public stat ...
- 从0到1使用Kubernetes系列(三):使用Ansible安装Kubernetes集群
前两期的文章介绍了Kubernetes基本概念和架构,用Kubeadm+Ansible搭建Kubernetes集群所需要的工具及其作用.本篇介绍怎么使用Ansible安装Kubernetes集群. 启 ...
- PinPoint单节点部署及客户端配置方法
在一次做项目中,需要涉及全链路压测,为了更好定位链路中某一节点可能会出现的问题,在繁忙之余,快速部署及应用了该链路工具,分享给大家~ 话不多说,开始部署~ 一.环境配置1.1 获取需要的依赖包进入ho ...
- Git浅析
Git浅析 索引 Git的常用命令 GitHub的使用 Git版本创建和回退 Git的工作区和暂存区 Git分支管理 1-Git的常用命令 01.创建一个版本库--进入相应的目录 git init 可 ...