Spring Boot 项目代码
首先构建一个简单的 Spring Boot 项目,然后给项目添加 Docker 支持,最后对项目进行部署。
-
在 pom.xml 中添加SpringBoot依赖,并添加 Web 支持。
1 <parent> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-parent</artifactId> 4 <version>2.2.0.RELEASE</version> 5 </parent> 6 7 <dependencies> 8 <dependency> 9 <groupId>org.springframework.boot</groupId> 10 <artifactId>spring-boot-starter-web</artifactId> 11 </dependency> 12 </dependencies> -
创建 启动类 并添加 Controller ,这里为了方便写在一起,其中有一个 Hello 方法,访问时返回 Hello Docker。
1/** 2 * @author Arley 3 * data:2020/1/30 4 * desc:Docker中部署springboot项目 5 */ 6@RestController 7@SpringBootApplication 8public class Application { 9 public static void main(String[] args) { 10 SpringApplication.run(Application.class, "--server.port=8888"); 11 } 12 13 @GetMapping("/hello") 14 public String Hello() { 15 return "Hello Docker"; 16 } 17}
添加完成之后,启动项目,访问 http://127.0.0.1:8888/hello ,页面返回 Hello Docker,说明项目配置正常。
在 SpringBoot 中添加 Docker 支持
-
在 pom.xml 中添加 Docker 镜像支持:
1 <!-- Docker 镜像前缀名 --> 2 <properties> 3 <docker.image.prefix>springboot</docker.image.prefix> 4 </properties> -
plugins 中添加 Docker 构建插件:
1<build> 2 <plugins> 3 <!-- 添加这个是因为我启动项目时遇到个问题(jar中没有主清单属性) 4 添加下面这个插件即可--> 5 <plugin> 6 <groupId>org.springframework.boot</groupId> 7 <artifactId>spring-boot-maven-plugin</artifactId> 8 <configuration> 9 <mainClass>com.arley.Application</mainClass> 10 </configuration> 11 <executions> 12 <execution> 13 <goals> 14 <goal>repackage</goal> 15 </goals> 16 </execution> 17 </executions> 18 </plugin> 19 <!-- Docker maven plugin --> 20 <plugin> 21 <groupId>com.spotify</groupId> 22 <artifactId>docker-maven-plugin</artifactId> 23 <version>1.0.0</version> 24 <configuration> 25 <imageName>${docker.image.prefix}/${project.artifactId}</imageName> 26 <!-- Dockerfile 文件存放目录 --> 27 <dockerDirectory>src/main/resources/docker</dockerDirectory> 28 <resources> 29 <resource> 30 <targetPath>/</targetPath> 31 <!-- jar包所在目录,缺省为target --> 32 <directory>${project.build.directory}</directory> 33 <!-- jar包名,缺省为 ${project.artifactId}-${project.version} --> 34 <include>${project.build.finalName}.jar</include> 35 </resource> 36 </resources> 37 </configuration> 38 </plugin> 39 <!-- Docker maven plugin --> 40 </plugins> 41 </build>
创建 Dockerfile 文件
在目录 src/main/resources/docker 下创建 Dockerfile 文件,Dockerfile 文件来说明如何构建镜像
-
Dockerfile 文件内容:
1FROM openjdk:8-jdk-alpine 2VOLUME /tmp 3ADD boot-docker-1.0-SNAPSHOT.jar app.jar 4ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]参数说明:
FROM openjdk:8-jdk-alpine: 使用 JDK8 环境作为基础镜像VOLUME /tmp: 在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到tomcat容器的工作目 录/tmp目录ADD boot-docker-1.0-SNAPSHOT.jar app.jar: 复制文件并且重命名。boot-docker-1.0-SNAPSHOT.jar为你的 SpringBoot 项目达成的 jar 包名。ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]:为了缩短 Tomcat 的启动时间,添加 java.security.egd 的系统属性指向 /dev/urandom 作为 ENTRYPOINT。
环境搭建
-
首先安装 Docker ,可以看我之前的教程
<a href="https://www.cnblogs.com/leizzige/p/12183038.html" target="\_blank">https://www.cnblogs.com/leizzige/p/12183038.html</a>
-
安装 Jdk
yum -y install java-1.8.0-openjdk*;配置环境变量:
打开
vim /etc/profile,添加以下内容 :1export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk 2export PATH=$PATH:$JAVA_HOME/bin修改完成之后,使其生效:
source /etc/profile,输入java -version返回版本信息则安装正常。 -
安装 Maven
解压:
tar -zxvf apache-maven-3.5.2-bin.tar.gz移动:mv apache-maven-3.5.2 /usr/local/maven修改环境变量, 在 /etc/profile 中添加以下几行:
1MAVEN_HOME=/usr/local/maven 2export MAVEN_HOME 3export PATH=${PATH}:${MAVEN_HOME}/bin记得执行
source /etc/profile使环境变量生效。输入mvn -version返回版本信息则安装正常。 这样整个构建环境就配置完成了。
使用 Docker 部署 Spring Boot 项目
将我们写好的 SpringBoot 项目复制到服务器中,进入项目的 pom 文件所在目录下进行打包测试。
-
打包:
mvn clean compile package,启动 :java -jar target/xxx-jar -
看到 Spring Boot 的启动日志后表明环境配置没有问题。 使用 DockerFile 构建镜像 :
mvn package docker:build -
第一次构建,看到以下内容表示构建成功了:

- 使用 docker images 命令查看构建好的镜像:

springboot/boot-docker 就是我们构建好的镜像,下一步运行该镜像:
docker run -itd -p 8888:8888 --name spring-boot-docker e879d41f3a71
启动完成之后 docker ps 查看正在运行的容器,可以看到我们构建的 spring-boot-docker 容器正在运行,
访问浏览器 http:http://47.98.161.xxx:8888/hello ,返回 Hello Docker。
使用 Docker 部署 SpringBoot 项目成功!!!!
项目地址 :<a href="https://github.com/CrazyArley/springboot" target="\_blank">https://github.com/CrazyArley/springboot</a>