本文档主要介绍,如果把自己编写的SpringBoot应用,使用IDEA,生成镜像,快捷部署到Docker上。
详细步骤如下:
1、开通Docker远程访问,如果已经开通过了,就跳过此步骤
通过SecureCRT(可以使用其它工具)联接到Docker的服务器,并通过root用户登录,执行下面命令修改docker配置文件
vi lib/systemd/system/docker.service
#更改前
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
#更新改,原行通过#号禁用,增加一条新的
# ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
修改完成之后,重启docker
#重新加载服务的配置文件
systemctl daemon-reload
#重启docker
systemctl restart docker
重启完成之后,验证是否开通成功。通过浏览器访问以下联接http://服务器IP:2375/version,展示以下内容表示开通成功。
2、使用IDEA,创建一个SpringBoot项目,创建Dockerfile文件,并放入项目中。
使用IDEA创建一个SpringBoot应用,创建一个简单的Controller。代码如下:
package com.example.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description: hello
* @Author: LvGang
* @Date: 2021/10/10 18:54
* @Version:1.0
*/
@RestController
public class HelloController {
@GetMapping("/")
public String hello(){
return "Hello Spring Boot Docker!";
}
}
创建一个Dockerfile文件,放到/src/main/docker目录下,Dockerfile文件编写可以查看文档:使用Dockerfile,把SpringBoot应用部署到Docker
FROM openjdk:8-jdk-slim
LABEL maintainer=lvgang
COPY demo-0.0.1-SNAPSHOT.jar /demo.jar
ENTRYPOINT ["java","-jar","/demo.jar"]
3、修改SpringBoot项目的pom.xml文件
修改项目pom.xml文件,增加以下内容:
在properties标签中增docker镜像前缀定义:
<docker.image.prefix>lvgang</docker.image.prefix>
在plugin标签中增docker-maven-plugin插件配置,详细请看一下文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<docker.image.prefix>lvgang</docker.image.prefix>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<configuration>
<!-- docker远程地址 -->
<dockerHost>http://139.198.124.61:2375/</dockerHost>
<!-- 镜像名,前缀/项目名称 -->
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<!-- Dockerfile的位置 -->
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
</project>
4、按顺序执行,生成Docker镜像
在IDEA中,Maven面版中分行执行clean、package两个命令,最后执行插件中的docker:build命令。
docker:build命令执行时输出以下内容,最后输入BUILD SUCCESS表示执行成功。
执行完成上面几个步骤,可以登录Docker服务器,使用docker images命令查看镜像是否生成成功
5、创建容器,验证镜像
通过SecureCRT(可以使用其它工具)联接到Docker的服务器,并通过root用户登录,执行docker run命令创建容器运行
docker run -d -p 8080:8080 lvgang/demo
使用浏览器,输入服务器的IP:8080,看是一下是否展示出相应的内容,展示相应内容表示配置成功。
注,在访问时需要服务开通过8080端的访问权限
通过上面5步,我们就把自己编写的SpringBoot应用,通过IDEA,快捷部署到Docker了。
原文:使用IDEA,快捷部署SpringBoot应用到Docker - 阿刚 - OSCHINA - 中文开源技术交流社区
作者: 阿刚ABC