最近备忘录新加的东西倒是挺多的,但到了新环境水土不服没动力去整理笔记

1. Demo Project

首先准备一个简单的项目,用来部署到 Docker 主机上,并且能验证该项目是否成功运行

1.1 接口准备

准备一个测试接口,用于校验 Docker 部署是否成功

  1. @RestController
  2. @RequestMapping("/")
  3. public class HelloController {
  4. @GetMapping("/hello")
  5. public String helle() {
  6. return "Hello World";
  7. }
  8. }

1.2 配置准备

在 application.yml 文件中添加 Docker 宿主机地址,方便统一管理(该功能需要安装依赖插件)

  1. server:
  2. port: 8080
  3. spring:
  4. application:
  5. name: docker-deploy-test
  6. docker:
  7. host: http://xxx.xxx.xxx.xxx:2375

2. Docker 开启远程连接

Docker 也是 Client/Serve 架构(dameon守护进程),其默认只能本地访问, 所以得设置成可外网访问我们才能部署项目到 Docker 上

1.1 修改配置文件

在 Docker 宿主机上编辑配置,添加下面一行配置(意思是任何地址都能访问 2375 端口)

  1. $vim /usr/lib/systemd/system/docker.service
  2. # ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
  3. ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock

1.2 刷新配置、重启

  1. $systemctl daemon-reload
  2. $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 插件并用,能够方便构建程序和部署

  1. <!-- docker 插件 -->
  2. <plugin>
  3. <groupId>com.spotify</groupId>
  4. <artifactId>docker-maven-plugin</artifactId>
  5. <version>1.0.0</version>
  6. <!-- 绑定 docker:build 到 maven 的 package 生命周期 -->
  7. <executions>
  8. <execution>
  9. <id>docker-build-image</id>
  10. <phase>package</phase>
  11. <goals>
  12. <goal>build</goal>
  13. </goals>
  14. </execution>
  15. </executions>
  16. <!-- 插件的配置 -->
  17. <configuration>
  18. <!-- 构建的镜像的名字 :标签 -->
  19. <imageName>${project.artifactId}:${project.version}</imageName>
  20. <!-- 存放dockerfile的路径 -->
  21. <dockerDirectory>${project.basedir}</dockerDirectory>
  22. <!-- docker Host 地址,用插件在 initialize 阶段从 application.yml 解析 -->
  23. <dockerHost>${docker.host}</dockerHost>
  24. <!-- SSL 认证证书地址,若开启 SSL 登录 -->
  25. <!-- <dockerCertPath></dockerCertPath> -->
  26. <resources>
  27. <resource>
  28. <!-- 使用什么资源来构建镜像(就是jar包),以及将镜像推送到容器的那个目录下 -->
  29. <targetPath>/</targetPath>
  30. <directory>${project.build.directory}</directory>
  31. <include>${project.build.finalName}.jar</include>
  32. </resource>
  33. </resources>
  34. </configuration>
  35. </plugin>

5. 编写Dockerfile

创建 Dockerfile 文件,填入下面的内容,然后将其放入到项目的根目录

  1. FROM openjdk:8-jdk-alpine
  2. MAINTAINER [author] [Howl@email.com]
  3. ARG JAR_FILE=/target/*.jar
  4. COPY ${JAR_FILE} app.jar
  5. EXPOSE 8080
  6. 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的更多相关文章

  1. (转) SpringBoot非官方教程 | 第二十四篇: springboot整合docker

    这篇文篇介绍,怎么为 springboot程序构建一个Docker镜像.docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的 ...

  2. springboot整合docker部署(两种构建Docker镜像方式)--2019-3-5转

    原文:https://www.cnblogs.com/shamo89/p/9201513.html 项目结构 package hello; import org.springframework.boo ...

  3. SpringBoot非官方教程 | 第二十四篇: springboot整合docker

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot24-docker/ 本文出自方志朋的博客 这篇文 ...

  4. springboot整合docker部署(两种构建Docker镜像方式)

    项目结构 package hello; import org.springframework.boot.SpringApplication; import org.springframework.bo ...

  5. springboot整合docker部署

    环境安装 首先,需要安装Docker(例如:docker for windows) 下载地址:https://download.docker.com/win/stable/Docker%20for%2 ...

  6. 微服务深入浅出(11)-- SpringBoot整合Docker

    添加Dockerfile 在目录src/main/resources目录下店家Dockerfile文件: From java MAINTAINER "Eric"<eric.l ...

  7. SpringBoot28 RabbitMQ知识点、Docker下载RabbitMQ、SpringBoot整合RabbtiMQ

    1 RabbitMQ知识点 1.1 整体架构图 消息生产者将消息投递到exchange中,exchange会以某种路由机制将生产者投递的消息路由到queue中,消息消费者再从queue中获取消息进行消 ...

  8. springboot与docker整合

    一.springboot与docker整合 a.创建Dockerfile FROM java MAINTAINER "Wing"<1561815137@qq.com> ...

  9. Springboot整合MongoDB的Docker开发,其它应用也类似

    1 前言 Docker是容器开发的事实标准,而Springboot是Java微服务常用框架,二者必然是会走到一起的.本文将讲解如何开发Springboot项目,把它做成Docker镜像,并运行起来. ...

随机推荐

  1. Python - Context Manager 上下文管理器

    什么是上下文管理器 官方解释... 上下文管理器是一个对象 它定义了在执行 with 语句时要建立的运行时上下文 上下文管理器处理进入和退出所需的运行时上下文以执行代码块 上下文管理器通常使用 wit ...

  2. Python实现一个简单三层神经网络的搭建并测试

    python实现一个简单三层神经网络的搭建(有代码) 废话不多说了,直接步入正题,一个完整的神经网络一般由三层构成:输入层,隐藏层(可以有多层)和输出层.本文所构建的神经网络隐藏层只有一层.一个神经网 ...

  3. Redis之品鉴之旅(七)

    分布式锁 1)阻塞锁: 尝试在redis中创建一个字符串结构缓存,方法传入的key,value为锁的过期时间timeout的时间戳. 若redis中没有这个key,则创建成功(即抢到锁),然后立即返回 ...

  4. kafka高可用探究

    kafka高可用探究 众所周知 kafka 的 topic 可以使用 --replication-factor 数和 partitions 数来保证服务的高可用性 问题发现 但在最近的运维过程中,3台 ...

  5. 通俗易懂,Layui前端框架!

    前言   layui 是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用.其外在极简,却又不失饱满的内在,体积轻盈,组件丰盈,从核心代 ...

  6. SpaCy下载及安装

    SpaCy可以说是坑多到怀疑人生.. 但是看在它那么功能那么强大的份上,我还是决定原谅它哈哈哈~ 1.首先用官网给的命令快速安装纯属扯淡..(结果就是一直拒绝你的连接) 官网:https://spac ...

  7. keepalived 安装和配置解析

    Keepalived的特性     配置文件简单:配置文件比较简单,可通过简单配置实现高可用功能     稳定性强:keepalived是一个类似于layer3, 4 & 7交换机制的软件,具 ...

  8. WinForm 控件 DataGridView 常用操作

    1.取消列自动生成 在窗体load事件里面设置表格dataGridView的AutoGenerateColumns为 false dataGridView.AutoGenerateColumns = ...

  9. UltraSoft - Alpha - Scrum Meeting 1

    Date: Apr 06th, 2020. 会议内容为讨论功能规格书和技术规格书的撰写. Scrum 情况汇报 进度情况 组员 负责 昨日进度 后两日任务 CookieLau PM.后端 进行Djan ...

  10. [no code][scrum meeting] Alpha 12

    项目 内容 会议时间 2020-04-19 会议主题 周总结会议 会议时长 45min 参会人员 全体成员 $( "#cnblogs_post_body" ).catalog() ...