- 修改docker.service文件
vim /lib/systemd/system/docker.service
//将文件内的 ExecStart注释, 新增端口2375支持
#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
systemctl restart docker
-
打开docker插件,新增远程docker连接,本例中使用的是虚拟机中的docker,其中虚拟机地址为:192.168.164.150
-
新建springboot工程,并编写简单controller示例
#HelloController.java
package cloud.donghu.contrller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping(value = "/hello")
public String hello() {
return "hello docker";
}
}
#applicatiion.properties
server.port=8080
- 修改pom.xml,添加docker插件
<?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.14</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cloud.donghu</groupId>
<artifactId>hello-docker</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>hello-docker</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<docker.image.prefix>donghu</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>
<!-- 镜像名称 guoweixin/exam-->
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<!--指定标签-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!-- 基础镜像jdk-->
<baseImage>java</baseImage>
<!-- 制作者提供本人信息 -->
<maintainer>donghu</maintainer>
<!--切换到/ROOT目录 -->
<workdir>/ROOT</workdir>
<entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint>
<!--指定远程 docker api地址-->
<dockerHost>http://192.168.164.150:2375</dockerHost>
<!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
<resources>
<resource>
<targetPath>/ROOT</targetPath>
<!--用于指定需要复制的根目录,${project.build.directory}表示target目录-->
<directory>${project.build.directory}</directory>
<!--用于指定需要复制的文件。${project.build.finalName}.jar指的是打包后的jar包文件。-->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
-
打开idea的Services选项卡,连接远程docker
-
依次执行maven的clean和package,在package时会将images加入到docker中
-
右击目标镜像create container,配置容器启动参数
-
点击Run,启动容器,访问页面
-
如需修改代码,则代码修改完成后重新执行maven的clean和package即可将新的镜像推送到docker上,此时重新启动容器即可。新的镜像生成后,旧的镜像会成为一个虚悬镜像,删除此虚悬镜像即可