maven插件docker-maven-plugin打包镜像并发布到dockerHub

文章目录

  • 前言
  • 一、使用maven插件制作docker镜像
  • 二、发布到dockerHub
  • 总结


前言

如果我们的项目要在docker中运行,那么就必须要把我们的项目生成docker镜像,如果要实现远程安装,也就必须要把镜像发布到远程仓库里,如果我们没有自己的私有docker仓库,那么我们可以使用免费的。目前我们常见的免费仓库是dockerHub。今天给大家介绍如何将Java项目通过maven插件来制作docker镜像并自动发布到dockerHub平台上。


一、使用maven插件制作docker镜像

使用maven来构建docker镜像,我们需要使用docker-maven-plugin这个插件,我们加入到maven中:

<plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.2.2</version><configuration><imageName></imageName><dockerDirectory>${project.basedir}</dockerDirectory><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory></resource></resources></configuration>
</plugin>

同时我们还要编写Dockerfile在项目根目录下添加Dockerfile文件,内容如下:

FROM xldevops/jdk17-lts:latest
RUN mkdir -p /opt/test-docker
WORKDIR /opt/test-docker
COPY test-docker.jar /opt/test-docker/test-docker.jar
CMD ["java","-jar", "/opt/test-docker/test-docker.jar"]

二、发布到dockerHub

要将镜像发布到dockerHub,首先需要申请dockerHub账户,登录docker Hub网站,申请好账户后登录,然后点击下图所示:
在这里插入图片描述
然后填写仓库名称:
在这里插入图片描述

注意,这里dockerHub只能创建一个私有仓库,如果你要创建多个私有库,需要付费使用。公有库就是任何人都可以下载使用,而私有库在下载镜像时,需要登录你的账号才能下载。
创建后,我们来修改maven。

首先,我们要配置maven的server,修改maven的settings.xml文件,我们在servers标签里面添加我们的账号信息:

<server><id>docker-hub</id><username>你的docker hub账号</username><password>你的docker hub密码</password><configuration><email>你的docker hub绑定的邮箱</email></configuration>
</server>

修改好后,我们配置项目的pom.xml文件,在configuration下增加:

<configuration><imageName>你的docker bub账号/test-docker:${version}</imageName><dockerDirectory>${project.basedir}</dockerDirectory><registryUrl>https://docker.io</registryUrl><serverId>docker-hub</serverId><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory></resource></resources>
</configuration>

然后我们运行一键构建命令:

mvn clean -DskipTests=true package docker:build  -DpushImage

运行完成后,我们去docker hub网站查看:
在这里插入图片描述
可以看到,在docker hub平台上已经有了我们刚才构建的镜像,如果要使用这个镜像只需要pull就可以了。


总结

1、上面我们介绍了如何将镜像上传到docker hub,对应想要公开的项目,这里提供了可以免费使用的仓库。

2、如果我们有私有镜像,我们可以将镜像上传到私有库,私有库能更好的管理镜像以及对权限的控制,在后续的文章中我会给大家陆续介绍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/457848.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang 学习(二)进阶使用

二、进阶使用 性能提升——协程 GoRoutine go f();一个 Go 线程上&#xff0c;可以起多个协程&#xff08;有独立的栈空间、共享程序堆空间、调度由用户控制&#xff09;主线程是一个物理线程&#xff0c;直接作用在 cpu 上的。是重量级的&#xff0c;非常耗费 cpu 资源。协…

docker常用10条容器操作命令

Docker 中一些常用的容器操作命令&#xff0c;我们可以根据需要使用这些命令来管理和操作 Docker 容器。我们这次以Hell-world这个镜像为例来说明&#xff1a; 1. docker pull hello-world #拉取hell-world镜像 2. docker images # 查看本地拉取的镜像 3. docker run hello…

使用No-SQL数据库支持连接查询用例的讨论

简介 在本文中&#xff0c;我们将简单介绍什么是No-SQL数据库。然后我们会讨论一种使用关系数据库比较容易实现的查询&#xff0c;即连接查询&#xff0c;怎么样使用No-SQL来实现。 什么是No-SQL数据库 与No-SQL数据库相对应的是传统的关系数据库&#xff08;RDBMS&#xff…

Android7.0-Fiddler证书问题

一、将Fiddler的证书导出到电脑&#xff0c;点击Tools -> Options -> HTTPS -> Actions -> Export Root Certificate to Desktop 二、下载Window版openssl&#xff0c; 点击这里打开页面&#xff0c;下拉到下面&#xff0c;选择最上面的64位EXE点击下载安装即可 安…

这款对标ChatGPT的国产MoE大模型重磅更新!集AI对话、AI绘画、AI阅读、AI写作于一体!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

「优选算法刷题」:外观数列

一、题目 给定一个正整数 n &#xff0c;输出外观数列的第 n 项。 「外观数列」是一个整数序列&#xff0c;从数字 1 开始&#xff0c;序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列&#xff1a; countAndSay(1) "1"coun…

使用Nginx搭建旁路服务器获取客户端真实IP

一、前言 在实际业务开发过程中&#xff0c;很多时候有记录客户端真实IP的需求&#xff0c;但是从客户端发送的请求往往会经过很多代理服务器&#xff0c;导致后端服务获取的IP为代理以后的IP&#xff0c;不具有业务含义。为了解决这个问题&#xff0c;可以搭建一个旁路服务器…

AutoGen实战应用(三):多代理协作的数据可视化

之前我完成了关于AutoGen的两篇博客&#xff0c;还没有读过这两篇博客的朋友可以先阅读以下&#xff0c;这样有助于对AutoGen的初步了解&#xff1a; AutoGen实战应用(一)&#xff1a;代码生成、执行和调试_autogen 支持的model-CSDN博客 AutoGen实战应用(二)&#xff1a;多代…

93.网游逆向分析与插件开发-游戏窗口化助手-升级经验数据获取的逆向分析

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;显示游戏数据到小助手UI 码云地址&#xff08;游戏窗口化助手 分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&#xff1a;852c339f5e4c103390b123e0eaed…

@RequestBody、@RequestParam、@RequestPart使用方式和使用场景

RequestBody和RequestParam和RequestPart使用方式和使用场景 1.RequestBody2.RequestParam3.RequestPart 1.RequestBody 使用此注解接收参数时&#xff0c;适用于请求体格式为 application/json&#xff0c;只能用对象接收 2.RequestParam 接收的参数是来自HTTP 请求体 或 请…

Redis——高级主题

介绍Redis的高级主题&#xff0c;包括服务器配置、Redis事务、Redis发布和订阅、Pipeline批量发送请求、数据备份与恢复等。 1、服务器配置 在Windows和Linux的Redis服务器里面&#xff0c;都有一个配置文件。Redis配置文件位于Redis安装目录下&#xff0c;在不同操作系统下&…

ChatGPT高效提问—prompt常见用法(续篇二)

ChatGPT高效提问—prompt常见用法&#xff08;续篇&#xff09; 1.4 汇总 ​ 面对浩瀚的文字海洋&#xff0c;利用ChatGPT强大的信息汇总功能&#xff0c;可以提炼出其中的核心思想。这个过程涉及将复杂且详细的内容精简为一个简明扼要的版本&#xff0c;同时恰当地保留原始文…