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

【2025】通过idea把项目到私有仓库(3)

目录💻

  • 前言
    • 一、修改maven配置
    • 二、配置pom.xml文件
    • 三、创建Dockerfile配置文件
    • 四、执行

前言

该篇文章主要是harbor仓库创建和使用,如果需要看docker创建部署可以看第一篇文章。通过下面四篇文章可以快速的实现项目运维部署管理,大大减少项目维护的工作量

该专栏主要为介绍通过docker compose实现容器编排部署

  • 🍅【2025】快速部署安装docker以及项目搭建所需要的基础环境(mysql、redis、nginx、nacos)(1)
  • 🍓【2025】harbor仓库搭建上传下载(2)
  • 🍇【2025】使用idea结合docker插件一键发布项目到harbor仓库
  • 🥒【2025】使用docker compose一键部署项目到服务器

一、修改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 /appENTRYPOINT ["java""-Xms512m", "-Xmx1g", "-Dfile.encoding=UTF-8", "-jar", "app.jar"]

四、执行

最后点击package即可执行打包jar并且把jar包转为镜像发布到仓库
在这里插入图片描述

http://www.xdnf.cn/news/866827.html

相关文章:

  • [Java 基础]银行账户程序
  • 如何选择合适的embedding模型用于非英文语料
  • 亚马逊站内信规则2025年重大更新:避坑指南与合规策略
  • golang常用库之-go-feature-flag库(特性开关(Feature Flags))
  • [蓝桥杯]密码脱落
  • NTC热敏电阻
  • 【Linux】进程
  • Pytorch模型格式区别( .pt .pth .bin .onnx)
  • nssm配置springboot项目环境,注册为windows服务
  • 【免杀】C2免杀技术(十五)shellcode混淆uuid/ipv6/mac
  • Mac 双系统
  • 深入详解开源工具DCMTK:C++开发的DICOM工具包
  • <el-table>构建树形结构
  • KrillinAI:视频跨语言传播的一站式AI解决方案
  • EasyRTC嵌入式音视频通信SDK音视频功能驱动视频业务多场景应用
  • HOPE800系列变频器安装到快速调试的详细操作说明
  • Delft3D软件介绍及建模原理和步骤;Delft3D数值模拟溶质运移模型建立;地表水环境影响评价报告编写思路
  • CppCon 2015 学习:3D Face Tracking and Reconstruction using Modern C++
  • 前端大数高精度计算解决方案,BigNumber.js
  • 前端面试二之运算符与表达式
  • 组件库二次封装——透传问题
  • UniApp 全生命周期钩子详解
  • 数据标注与大模型的双向赋能:效率与性能的跃升
  • CMake + Ninja 构建程序示例
  • CortexON:开源的多代理AI系统无缝自动化和简化日常任务
  • 【推荐算法】推荐系统核心算法深度解析:协同过滤 Collaborative Filtering
  • 07 APP 自动化- appium+pytest+allure框架封装
  • RabbitMQ 的异步化、解耦和流量削峰三大核心机制
  • ④Pybullet之Informed RRT*算法介绍及示例
  • 在本地查看服务器上的TensorBoard