Maven打包构建Docker镜像并推送到仓库

这篇具有很好参考价值的文章主要介绍了Maven打包构建Docker镜像并推送到仓库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Maven打包构建Docker镜像并推送到仓库


对于开发完成的服务要发布至服务器Docker时,我刚学习了解Docker时构建镜像方式是将我的本地服务先通过maven打包称为jar包,然后再上传至我的服务器上,通过Dockerfile将其构建成为镜像。后来才了解了直接通过maven命令直接打包构建的方式,以下是完成这一操作的步骤。

一,服务器Docker配置

修改daemon.json文件,开放端口2375

"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]

我的文件如下所示:

{
  	"insecure-registries":["10.xx.xx.xx:5000"],
	"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
}
{
"graph":"/Data/docker"
}

二,本地项目maven配置

2.1 pom.xml

在项目的pom文件引入docker-maven-plugin插件

<plugin>
                <!-- https://mvnrepository.com/artifact/com.spotify/docker-maven-plugin -->
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.2</version>
                <executions>
                    <!-- 当mvn执行install操作的时候,执行docker的build和push -->
                    <execution>
                        <id>build</id>
                        <phase>install</phase>
                        <goals>
                            <goal>build</goal>
                            <!--                                <goal>push</goal>-->
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- 连接到 带docker环境的linux服务器 编译image -->
                    <dockerHost>http://10.xx.xx.xx:2375</dockerHost>

                    <!--格式:私有仓库/镜像名称:版本号, 如果要执行push操作, 那么镜像名称必须为私有仓库为前缀,不然无效。-->
                    <imageName>10.xx.xx.xx:5000/${project.artifactId}:${docker.tag}</imageName>

                    <!--指定dockerfile文件路径-->
                    <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>

                    <!-- 指定jar包路径,这里对应Dockerfile中复制 jar 包到 docker 容器指定目录配置,也可以写到 Docokerfile 中 -->
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>

                    <!--跳过测试-->

                    <!-- push到 docker hub 开始 -->
                    <!-- serverId 这个是配置在maven的setting.xml中私服的登录账户信息-->
                    <!--                    <serverId>docker-hub</serverId>-->
                    <retryPushCount>3</retryPushCount>
                    <retryPushTimeout>2000</retryPushTimeout>
                    <registryUrl>10.xx.xx.xx:5000</registryUrl>
                    <!-- 是否自動推送到Registry Server, 建議手動推送 -->
                    <pushImage>${docker.push}</pushImage>
                    <!-- push到 docker hub 结束 -->
                </configuration>
            </plugin>

重要配置解释:

  • dockerHost:docker所在服务器的ip和开放的端口
  • imageName:最终构建的镜像名称
  • dockerDirectory:本地dockerfile文件存放路径
  • targetPath:本地jar包生成位置
  • registryUrl:服务器docker的仓库地址
  • pushImage:是否在构建镜像后同时推送到Docker仓库

2.2 dockerfile

在本地项目的src/main下创建docker目录,在docker目录下创建dockerfile文件

FROM 10.xx.xx.xx:5000/java
VOLUME /tmp
ENV LANG C.UTF-8
COPY *.jar app.jar
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
RUN echo "Asia/Shanghai" > /etc/timezone 
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-Djava.util.Arrays.useLegacyMergeSort=true", "-jar","app.jar"]

2.3 验证

此时,对该项目进行mvn install时,相当于会同时进行docker:build的动作,将本地项目jar包构建成镜像到服务器中

2.4 统一dockerfile

如果每个服务的镜像构建没有差异,可以将dockerfile从子项目中抽出来,就不需要在每一个项目模块中都创建相同的文件,直接放在项目根路径下就可以进行通用,同时修改pom配置

	<!--指定dockerfile文件路径-->
	<dockerDirectory>${project.parent.basedir}/docker</dockerDirectory>

此时的dockerfile存储位置为项目父级目录的docker文件夹下。文章来源地址https://www.toymoban.com/news/detail-454601.html

到了这里,关于Maven打包构建Docker镜像并推送到仓库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Idea使用Docker插件实现maven打包自动构建镜像

    Docker 开启TCP 服务 改写以下内容 重启服务 此时docker已经开放了2375端口,使用外部主机访问 http://docker:2375/info IDEA 集成Docker 安装Docker 插件 配置docker服务地址 点击view-services,打开docker的操作面板 双击docker01可以看到此docker服务下镜像和容器 右击docker镜像,可以创建新的容器,

    2024年02月10日
    浏览(49)
  • 【Docker】使用docker-maven-plugin插件构建发布推镜像到私有仓库

    本文描述了在Spring Boot项目中通过docker-maven-plugin插件把项目推送到私有docker仓库中,随后拉取仓库中的项目用docker run运行项目。作者自行构建,质量有保证。 1、要想使用 docker-maven-plugin ,需要在 pom.xml 中添加该插件; 注:注意下db:3306 2、我们构建镜像之前需要先将项目打包

    2024年02月15日
    浏览(48)
  • 使用git把本地项目关联远程代码仓库,并推送到远程仓库

    你在本地新建了一个项目,写好了代码,但是没有关联远程仓库,怎么关联并上传呢? 你要先去gitee创建一个代码仓库,然后复制http地址。 首次提交项目代码到一个新建的远程仓库: 方式一(推荐): 1、在项目目录中右键 git bash here。 通过命令 git init 把这个目录变成git可以

    2024年02月08日
    浏览(71)
  • github cli 创建远程仓库并推送到github

    以下操作基于macOS,其他系统安装请参阅官方文档cli/cli: GitHub’s official command line tool。 以下操作步骤基本上就是上下方向键进行选择,然后回车。Token需要访问这里手动创建并粘贴。Token的权限应该至少包括 repo , read:org , admin:public_key . 基本上就是输入 gh repo create 然后一路根

    2024年02月02日
    浏览(54)
  • 本地镜像如何推送到docker 仓库

    要将本地镜像推送到Docker仓库,需要按照以下步骤操作: 1. 首先,使用`docker login`命令登录到Docker仓库。输入用户名和密码进行身份验证。 2. 然后,使用`docker tag`命令为本地镜像添加标签。语法为`docker tag [本地镜像ID] [仓库地址]/[镜像名称]:[标签]`。其中,`[仓库地址]`是Do

    2024年02月08日
    浏览(53)
  • Git 一份代码如何同时提交并推送到两个仓库

    博文目录 Git - 将一个项目同时从本地推送到 GitHub 和 Gitee 一份代码如何同时提交并推送到两个仓库, 需要明确从哪个仓库拉取代码 查看仓库绑定情况 再绑定另外一个远程仓库, 该仓库只推不拉 这时候执行推送, 大概率只能成功推到第一个仓库, 后绑定的仓库会拒绝, 要求先获

    2023年04月08日
    浏览(49)
  • vs code创建新的本地分支并推送到远程仓库

    代码仓库使用的gitee(这个没有影响,操作都是一样的) 前提:本地与远程仓库已建立联系,本地已有一个分支(此处命名master) 需求:本地新建一个分支,并推送到远程仓库 在这里可以看到变化的内容  第一步: 所有变动过的文件都会展示在“更改”下方 点击文件后的“

    2024年01月23日
    浏览(48)
  • IDEA制作docker镜像推送到docker hub和阿里云镜像仓库

    学习如何本地制作镜像推送到远程仓库管理,希望可以帮到有需要的人 准备工作:         1.注册docker hub账号,下载Docker Desktop Windows版本         2.注册阿里云账号,开通容器镜像服务个人版 注意事项 Docker Desktop的安装教程网上有很多,这里不做教程,这里提醒一点避免安

    2024年01月19日
    浏览(64)
  • 【DevOps-08-4】Jenkins实现自定义镜像并推送到Harbor

    打开Jenkins管理后台,进入项目详情 在构建-增加构建步骤-执行shell 添加编写构建执行shell脚本 更改Springboot java项目源码版本,并提交到Gitlab 登录到Gitlab管理后台,新建一个v3.0的tag 到Jenkins管理后台,对项目执行构建 构建记录详情,查看构建日志 在宿主机查看使用Jenkins打包

    2024年01月19日
    浏览(49)
  • Docker|kubernetes|本地镜像批量推送到Harbor私有仓库的脚本

    前言: 可能有测试环境,而测试环境下有N多的镜像,需要批量导入到自己搭建的Harbor私有仓库内,一般涉及到批量的操作,自然还是使用脚本比较方便。 本文将介绍如何把某个服务器的本地镜像 推送到带有安全证书的私有Harbor仓库。 一, ###本例中,私有Harbor仓库的地址是

    2024年02月10日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包