IDEA远程一键部署SpringBoot到Docker

IDEA远程一键部署SpringBoot到Docker

一、Docker 环境安装

参考Centos7上安装Docker

1、配置docker远程连接端口
1
vim /usr/lib/systemd/system/docker.service

找到 ExecStart,在最后面添加 -H tcp://0.0.0.0:2375,大约在14行

1
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
2、重启docker
1
2
3
systemctl daemon-reload
systemctl stop docker
systemctl start docker
3、若开启防火墙,请开放2357端口
1
firewall-cmd --zone=public --add-port=2375/tcp --permanent

二、IDEA 环境配置

1、idea安装插件

image

2、远程连接docker编辑配置

image

3、填远程docker地址

image

4、连接成功,会列出远程docker容器和镜像

image

三、SpringBoot项目配置

首先创建一个spring-boot-starter-web的基本项目,创建一个测试请求返回Hello Docker,并指定log日志地址,方便我们把日志输出到宿主机上。

1、POM依赖配置,主要添加docker的打包plugins
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?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.1.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.cnsyear</groupId>
<artifactId>springboot-docker</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-docker</name>
<description>Demo project for Spring Boot</description>

<properties>
<java.version>1.8</java.version>
</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>

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--docker-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<configuration>
<tasks>
<copy todir="src/main/docker"
file="target/${project.artifactId}-${project.version}.${project.packaging}"></copy>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
2、测试请求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.cnsyear.springbootdocker;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

@RestController
public class HelloController {

private final static Logger logger = LoggerFactory.getLogger(HelloController.class);

@GetMapping("/")
public String hello() {

logger.info("Hello Docker! " + new Date());

return "Hello Docker!";
}
}
3、application.properties
1
2
3
4
server.port=9090

# 日志
logging.path=/home/developer/app/logs/
4、创建Dockerfile

在src/main目录下创建docker目录,并创建Dockerfile文件,该目录对应着pom文件中maven-antrun-plugin的配置。

1
2
3
FROM openjdk:8-jdk-alpine
ADD *.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
5、增加配置

image

image

命令解释:

  • Image tag : 指定镜像名称和tag,镜像名称为 springboot-docker,tag为1.0
  • Container name : 指定容器名称
  • Bind ports : 绑定宿主机端口到容器内部端口。格式为[宿主机端口]:[容器内部端口]
  • Bind mounts : 将宿主机目录挂到到容器内部目录中。
    格式为[宿主机目录]:[容器内部目录]。这个springboot项目会将日志打印在容器 /home/developer/app/logs/ 目录下,将宿主机目录挂载到容器内部目录后,那么日志就会持久化容器外部的宿主机目录中。
6、Docker启动

先执行mvn install,在点击docker启动

运行成功

image

image

image

参考文档:

https://mp.weixin.qq.com/s/-YuDKcJ8GNEkq2o4K0zjWw

-------------已经触及底线 感谢您的阅读-------------

本文标题:IDEA远程一键部署SpringBoot到Docker

文章作者:趙小傑~~

发布时间:2019年09月03日 - 10:51:16

最后更新:2019年09月04日 - 22:30:25

原始链接:https://cnsyear.com/posts/5dff44cb.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%