Spring Boot项目打包Docker Spring Boot打包Docker镜像
一、准备工作
1、Linux CentOS 系统,已安装好Docker 服务,不会点这里。
2、Linux CentOS 系统的Docker服务中,已经安装 JDK 镜像,不会点这里。
3、Linux CentOS 系统中,已经安装好 Maven 服务。
二、开始
1、使用Spring Boot Starter 创建一个普通maven web项目,过程略。(参考这里)
2、pom.xml 添加 dockerfile-maven-plugin 插件
<!-- SpringBoot打包Docker插件 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.10</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
<configuration>
<repository>${project.artifactId}</repository>
<tag>${project.version}</tag>
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
3、项目路径下,创建 Dockerfile 文件 ,添加如下配置:
FROM openjdk:latest
LABEL docker_study="boot"
EXPOSE 8080
ARG JAR_FILE
ADD target/${JAR_FILE} /spring-boot-tourist.jar
ENTRYPOINT ["java","-jar","/spring-boot-tourist.jar"]
4、 项目移动到,装有Docker服务的 Linux CentOS系统中:
5、执行 mvn clean package -DskipTests 进行打包镜像
6、 docker images , 查看镜像
7、 docker run -d -it --name springboot-8080 -p 8080:8080 spring-boot-tourist:0.0.1-SNAPSHOT ,运行镜像
docker run -d -it --name springboot-8080 -p 8080:8080 spring-boot-tourist:0.0.1-SNAPSHOT
--name springboot-8080:容器名,自定义
-p 8080:8080:端口进行映射,将本地 8080 端口映射到容器内部的 8080 端口
spring-boot-tourist:0.0.1-SNAPSHOT : 镜像名称:标签名 ; docker images 查看
8、浏览器访问: http://192.168.213.129:8080 ,可正常访问,则打包成功
三、总结
1、Spring Boot项目,打包Docker镜像,需要做以下准备:
- CentOS中安装Docker服务
- Docker服务中,安装JDK镜像
- CentOS中安装 maven服务
2、pom.xml 添加 dockerfile-maven-plugin 插件
3、项目路径下,创建 Dockerfile 文件
4、了解更多:
- 关于 dockerfile-maven-plugin 插件
- Dockerfile 文件
5、遗留问题:若使用自己创建的JDK镜像,进行打包,报错,无法成功创建镜像。
6、补充 docker 项目命令:
- 移除镜像: docker rmi 镜像id / 镜像名:[tag]
- 查看已运行的容器实例: docker ps
- 查看启动过的容器实例: docker ps -a
- 关闭容器实例:docker stop 容器id / 容器名
- 启动容器实例: docker start 容器id / 容器名
- 移除容器:docker rm 容器id / 容器名
参考资料:https://github.com/spotify/dockerfile-maven