如何通过idea把项目到私有仓库

 更新时间:2025年07月18日 17:08:01   投稿:jingxian  
本文介绍Harbor仓库的创建与使用流程,涵盖Maven远程配置、pom.xml参数设置、Dockerfile构建镜像及执行发布步骤,旨在实现项目运维自动化,降低维护成本

前言

该篇文章主要是harbor仓库创建和使用,如果需要看docker创建部署可以看第一篇文章。

通过下面四篇文章可以快速的实现项目运维部署管理,大大减少项目维护的工作量

一、修改maven配置

我们本地如果安装了docker环境则不用做处理,直接调用本地环境进行打包制作镜像发布;但很多时候我们本地不一定会安装docker的环境,这时候我们就需要通过配置远程连接服务器的方式进行打包制作镜像。

打开idea设置,进入Settings > Build, Execution, Deployment > Build Tools > Maven > Runner,配置环境变量:

  • DOCKER_TLS_VERIFY:启用安全验证
  • DOCKER_HOST:服务器docker的地址
  • DOCKER_CERT_PATH:远程的服务器docker的加密证书地址
DOCKER_TLS_VERIFY=1;DOCKER_HOST=https://10.37.129.2:2376;DOCKER_CERT_PATH=/Library/zheng/docker/tls

二、配置pom.xml文件

下面配置由几部分组成:

  • <properties> 主要用来读取版本声明和harbor仓库域名地址
  • <plugins> 用来声明插件集合,主要包括了maven打包的插件以及docker构建插件

下面的配置是可以直接粘贴使用的,只需要修改自己的harbor仓库的账号密码,以及项目名称即可

    <properties>
        <!-- docker镜像的版本号  -->
        <image.tag.verion>1.0.1</image.tag.verion>
        <!-- 远程harbor仓库的域名地址 -->
        <docker.repostory>10.37.129.2:5000</docker.repostory>
        <!-- harbor为这个项目创建的目录   -->
        <harbor.project>ssyx</harbor.project>
    </properties>

    <build>
        <finalName>${project.artifactId}</finalName> <!--jar包名字-->
        <plugins>
            <!-- Maven Compiler Plugin -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!-- 在此处添加 Maven 编译插件的配置,如果需要的话 -->
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- Docker 构建插件 -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.13</version>
                <executions>
                    <execution>
                        <id>default</id>
                        <!--    maven打包阶段就触发dockerfile-maven-plugin插件的以下动作   -->
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                            <goal>tag</goal>
                            <goal>push</goal>
                        </goals>
                        <configuration>
                            <!-- docker镜像版本号,引用上面的 -->
                            <tag>${image.tag.verion}</tag>
                        </configuration>
                    </execution>
                </executions>
                <configuration>
                    <!-- 指定dockerfile所在目录 -->
                    <contextDirectory>${project.basedir}</contextDirectory>
                    <!-- 指定docker镜像名,格式必须这样写,  注意:这里${docker.repostory}仓库地址必须有,因为docker需要这个去连接你真实仓库地址,否则就会连接到官方的docker.io仓库了, 镜像名称格式是:harbor仓库域名/子仓库/镜像名称,版本号由上面的tag动作标注 -->
                    <repository>${docker.repostory}/${harbor.project}/${project.artifactId}</repository>
                    <!-- 连接远程harbor仓库的用户名和密码 -->
                    <username>admin</username>
                    <password>Harbor12345</password>
                    <!-- 传递环境变量:JAR_FILE给dockerfile -->
                    <buildArgs>
                        <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

三、创建Dockerfile配置文件

Dockerfile作用主要是构建docker的镜像使用,下面的代码大致的作用就是先指定基础镜像,因为是java应用,所以指定jdk作为启动环境,然后在读取本地maven打好的jar包,构建好一个镜像,最后在通过ENTRYPOINT设置启动命令

需要注意FROM 引用的jdk镜像根据自己情况选择一个

# 设置JAVA版本,如果需要生成图片(验证码等),则需要使用 openjdk:8-jdk 这个基础镜像、
# openjdk:8-jre #如果只需要运行时环境则可以使用这个会比jdk的更小
# openjdk:8-jdk
FROM openjdk:8-jdk-alpine
# 接收pom.xml文件传递的变量
ARG JAR_FILE
# 注意WORKDIR指向的目录必须提前存在,否则后面复制文件的时候会失败,导致容器无法运行
RUN echo "JAR_FILE is: ${JAR_FILE}" && mkdir /app
WORKDIR /app
COPY target/${JAR_FILE} ./app.jar
RUN echo "ls result" && ls -l /app

ENTRYPOINT ["java","-Xms512m", "-Xmx1g", "-Dfile.encoding=UTF-8", "-jar", "app.jar"]


四、执行

最后点击package即可执行打包jar并且把jar包转为镜像发布到仓库

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 深入理解Java集合框架如何构建高效、灵活的数据管理方案

    深入理解Java集合框架如何构建高效、灵活的数据管理方案

    Java集合框架是Java语言中一个非常重要且强大的部分,它提供了一套丰富、灵活且类型安全的集合数据结构,帮助开发者以统一和一致的方式处理数据集合,这篇文章主要介绍了深入理解Java集合框架:构建高效、灵活的数据管理方案,需要的朋友可以参考下
    2025-03-03
  • JAVA OOM内存溢出问题深入解析

    JAVA OOM内存溢出问题深入解析

    这篇文章主要为大家介绍了JAVA OOM内存溢出问题深入解析,在生产环境抢修中,我们经常会碰到应用系统java内存OOM的情况,这个问题非常常见,今天我们就这个问题来深入学习探讨一下
    2023-10-10
  • java与js代码互调示例代码

    java与js代码互调示例代码

    用到java和js方法互调,在用HTML5做跨平台应用开发时经常会用到,在这里分享一些自己在实际开发过程中的用法,希望对初学者有所帮助
    2013-07-07
  • Spring细数两种代理模式之静态代理和动态代理概念及使用

    Spring细数两种代理模式之静态代理和动态代理概念及使用

    代理是一种设计模式,提供了对目标对象另外的访问方式,即通过代理对象访问目标对象。可以不修改目标对象,对目标对象功能进行拓展。在我们学习Spring的时候就会发现,AOP(面向切面编程)的底层就是代理
    2023-02-02
  • java代理模式(静态代理、动态代理、cglib代理)

    java代理模式(静态代理、动态代理、cglib代理)

    代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;这篇文章主要介绍了Java 中的三种代理模式,需要的朋友可以参考下,希望能给你带来帮助
    2021-07-07
  • 简单了解JavaCAS的相关知识原理

    简单了解JavaCAS的相关知识原理

    这篇文章主要介绍了简单了解JavaCAS的相关知识,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • java线程并发semaphore类示例

    java线程并发semaphore类示例

    Java 5.0里新加了4个协调线程间进程的同步装置,它们分别是Semaphore, CountDownLatch, CyclicBarrier和Exchanger,本例主要介绍Semaphore,Semaphore是用来管理一个资源池的工具,可以看成是个通行证
    2014-01-01
  • Java中的缓冲流详细解析

    Java中的缓冲流详细解析

    这篇文章主要介绍了Java中的缓冲流详细解析,缓冲流可以分为字节缓冲流,字符缓冲流,字节缓冲流可分为字节输⼊入缓冲流,字节输出缓冲流,字符缓冲流可以分为字符输入缓冲流,字符输出缓冲流,需要的朋友可以参考下
    2023-11-11
  • Java Iterator迭代器_动力节点Java学院整理

    Java Iterator迭代器_动力节点Java学院整理

    迭代器是一种模式,它可以使得对于序列类型的数据结构的遍历行为与被遍历的对象分离,接下来通过本文给大家分享Java Iterator迭代器_动力节点Java学院整理,需要的朋友参考下吧
    2017-05-05
  • 浅谈Java中是否直接可以使用enum进行传输

    浅谈Java中是否直接可以使用enum进行传输

    这篇文章主要介绍了浅谈Java中是否直接可以使用enum进行传输,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05

最新评论