当前位置: 首页 > news >正文

Docker 入门篇(九)-- 使用 Maven 插件 构建 Docker 镜像

在这篇教程中,我们将学习如何使用 Maven 插件为 Spring Boot 应用构建 Docker 镜像。我们将使用 spring-boot-maven-plugin 和 dockerfile-maven-plugin 这两个插件。

一、前提条件

  • 已安装 Docker。
  • 已安装 JDK 8 或以上版本。
  • 已安装 Maven。

二 创建一个 Spring Boot 项目

首先,使用 Spring Initializr 创建一个新的 Spring Boot 项目,或者你可以使用已有的项目。

curl https://start.spring.io/starter.zip -d dependencies=web -d type=maven-project -d language=java -d bootVersion=2.6.3 -o demo.zip
unzip demo.zip -d demo
cd demo

三、配置 Maven 插件

在 pom.xml 中添加 Docker Maven 插件配置。在 标签内添加以下内容:

<build><plugins><!-- Spring Boot Maven Plugin --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><!-- Dockerfile Maven Plugin --><plugin><groupId>com.spotify</groupId><artifactId>dockerfile-maven-plugin</artifactId><version>1.4.13</version><executions><execution><id>default</id><goals><goal>build</goal></goals></execution></executions><configuration><repository>your-dockerhub-username/demo</repository><tag>${project.version}</tag><skipDockerBuild>false</skipDockerBuild></configuration></plugin></plugins>
</build>

四、创建 Dockerfile

在项目根目录创建一个 Dockerfile 文件,并添加以下内容:

# 使用官方的 OpenJDK 作为基础镜像
FROM openjdk:8-jdk-alpine# 设置工作目录
VOLUME /tmp# 复制 jar 文件到容器中
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar# 运行应用
ENTRYPOINT ["java","-jar","/app.jar"]

五、构建和运行 Docker 镜像

使用以下命令来构建项目和 Docker 镜像:

mvn clean package dockerfile:build

构建成功后,终端输出如下所示:

构建完成后,你可以使用以下命令运行 Docker 容器:

docker run -p 8080:8080 your-dockerhub-username/demo:0.0.1-SNAPSHOT

运行成功后,浏览器访问 http://localhost:8080 可以看到 Spring Boot 应用的默认页面。

六、推送 Docker 镜像到 Docker Hub

确保已登录到 Docker Hub:

docker login

然后使用以下命令将镜像推送到 Docker Hub:

mvn dockerfile:push
http://www.lryc.cn/news/365632.html

相关文章:

  • 网络协议三
  • LeetCode LRU缓存
  • Parallels Desktop for Mac 19.4.0更新了哪些内容?有什么改进?
  • Python 将CSV文件转为PDF文件
  • 4_XMR交易过程
  • 02_共享锁和排他锁
  • Ubuntu的启动过程
  • c# 下 ScintillaNET 显示XML信息并折叠节点
  • 什么叫防御式编程
  • 前端优化之图片压缩——tinyPNG
  • Springboot集成Quartz
  • Android面试题之Kotlin Jetpack组件LifecycleScope
  • MySQL深分页优化
  • 问题:律师会见委托人的方式包括团体会见和( )。 #职场发展#笔记#学习方法
  • Spring Boot中整合Jasypt 使用自定义注解+AOP实现敏感字段的加解密
  • pytorch中的维度变换操作性质大总结:view, reshape, transpose, permute
  • LeetCode刷题 | Day 4 分割等和子集(Partition Equal Subset Sum)自底向上动态规划
  • 基于工业互联网打造敏捷供应链的实现方式:创新路径与实践应用
  • 碳化硅柱式膜的广泛应用
  • 【QT】QFont字体设置
  • Vue3+vite部署nginx的二级目录,使用hash模式
  • 云南区块链商户平台发票助手成品
  • AI图书推荐:检索增强生成RAG赋能大语言模型
  • 高效学习LabVIEW的方法
  • C语言 | Leetcode C语言题解之第136题只出现一次的数字
  • 如何利用Varjo混合现实技术改变飞机维修训练方式
  • C++:按指定字符分割字符串
  • 网络网络层之(6)ICMPv4协议
  • Opengrok代码在线查看平台
  • 济南适宜地提取