1.安装Docker
具体安装过程不再赘述,但是下载Docker Desktop Installer的时候一定要用迅雷下载,速度快n倍
下面这个选项记得勾选
然后在Docker Engine中添加阿里云的镜像加速器 阿里云镜像加速器获取地址
2.创建一个SpringBoot项目
1. 正常创建maven项目加入springWeb模块
2. 添加Controller
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@RequestMapping("/")
@ResponseBody
public String hello() {
return "Hello, SpringBoot With Docker";
}
}
3.在src/main下创建文件夹docker并且在该文件夹下新建文件Dockerfile 文件内容如下
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD hello-0.0.1-SNAPSHOT.jar app.jar //包名根据自己项目实际名称进行修改,app.jar前面的空格不要丢了
ENTRYPOINT ["java","-jar","/app.jar"]
4. 修改pom
1. 在 properties 中添加<docker.image.prefix>ramer</docker.image.prefix>
2. 在plugins中添加docke打包插件
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
注意artifactId标签内docker-maven-plugin和dockerfile-maven-plugin是两个不同的插件,所以打包命令也是不同的,一定要确认好自己用的哪个插件,两个插件版本号也不同
5. 完整的pom如下
<?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.3.1.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>hello</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<!-- 需要修改的第一处 -->
<docker.image.prefix>ramer</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>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</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>0.4.13</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<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>
3.开始进行打包部署
-
首先对项目进行Maven install
-
然后从cmd进入项目根目录执行 mvn package docker:build
如果遇到
[ERROR] No plugin found for prefix 'docker' in the current project and in the plugin groups...
这个报错,可以去修改maven 的配置文件 settings.xml<pluginGroups> <pluginGroup>com.spotify</pluginGroup> </pluginGroups>
-
创建image成功后执行 docker images查看已存在的镜像
4.看到自己新建的镜像后运行镜像docker run -p 8062:8089 -t ramer/hello (第一个端口号对应的你项目的端口号,第二个端口号为映射到本地主机的端口号)
5.在本地输入http://localhost:8062/即可正常访问