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 主机即可


SpringBoot 整合 Docker_第1张图片

这里新建一个 Docker,填上主机地址会自动连接,显示 Connection successful 则表示 IDEA 连上宿主机了







4. Maven 添加 Docker 插件

上一步的 IDEA 插件可以构建镜像并部署了,还能管理 Docker。但笔者是 maven 插件 和 IDEA 插件并用,能够方便构建程序和部署




    com.spotify
    docker-maven-plugin
    1.0.0

    
    
        
            docker-build-image
            package
            
                build
            
        
    

    
    
        
        ${project.artifactId}:${project.version}
        
        ${project.basedir}
        
        ${docker.host}
        
        
        
            
                
                /
                ${project.build.directory}
                ${project.build.finalName}.jar
            
        
    







5. 编写Dockerfile

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


FROM openjdk:8-jdk-alpine

MAINTAINER [author] [[email protected]]

ARG JAR_FILE=/target/*.jar

COPY ${JAR_FILE} app.jar

EXPOSE 8080

ENTRYPOINT ["java","-jar","/app.jar"]

SpringBoot 整合 Docker_第2张图片







6. 打包项目

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


SpringBoot 整合 Docker_第3张图片







7. 创建容器

在 IDEA 的插件中可以管理 Docker,点开右下角 services 里面可以看到连接上的 Docker 里有刚才构建的镜像,然后我们可以选择这个镜像右键来创建容器


在弹出框里面填入要创建的容器的名字,以及容器映射的端口,最后点击 Run,等待容器启动即可。启动完成后可以在 IDEA 的插件里看到新建的容器,点击可以查看容器的详情


SpringBoot 整合 Docker_第4张图片







8. 校验部署

使用宿主机的 IP 地址或域名来访问刚才发布的测试接口


SpringBoot 整合 Docker_第5张图片



你可能感兴趣的:(SpringBoot 整合 Docker)