生产环境必备:Docker 搭建 Nexus 全流程与批量上传 Jar 包实战

news2024/12/23 1:55:58

目录

1.创建docker-compose文件

2.域名代理无域名需求可跳过 

2.1创建nginx的compose  (映射端口更具实例进行改进)

2.2创建nginx.conf

3.访问nexus

 4.创建储存库以及批量上传jar包

4.1批量上传jar包

4.2创建两个sh脚本 

 4.3执行脚本

 4.4成功验证


“如果您在解决类似问题时也遇到了困难,希望我的
经验分享
对您有所帮助。如果您有任何疑问或者想分享您的经历,欢迎在评论区留言,我们可以一起探讨解决方案。祝您在编程路上顺利前行,不断突破技术的难关,感谢您的阅读!” 


 

1.创建docker-compose文件

version: '3'

services:
  nexus:
    image: sonatype/nexus3:latest
    ports:
      - 8081:8081
    volumes:
      - /data/nexus:/nexus-data
    container_name: nexus
    networks:
      - harbor
    user: "0:0"
    restart: always
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8081"]
      interval: 30s
      timeout: 10s
      retries: 3

networks:
  harbor: {}

2.域名代理无域名需求可跳过 

2.1创建nginx的compose  (映射端口更具实例进行改进)

version: '3'

services:
  nginx:
    image: goharbor/harbor-portal:v2.2.0
    container_name: harbor-portal
    restart: always
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
      - NET_BIND_SERVICE
    volumes:
      - type: bind
        source:./common/config/portal/nginx.conf
        target: /etc/nginx/nginx.conf
    networks:
      - harbor
    dns_search:.
    depends_on:
      - log
    logging:
      driver: "syslog"
      options:
        syslog-address: "tcp://127.0.0.1:1514"
        tag: "portal"

  log:
    # 假设这里是日志服务的配置,可以根据实际情况进行调整
    image: some-logging-image
    container_name: logging-service
    restart: always
    # 其他可能的配置...

networks:
  harbor:
    # 可以根据需要设置网络参数,如果不需要特殊设置,可以不添加任何内容

2.2创建nginx.conf

https可去掉我的环境特殊用来跳转用

xxxxx根据实际情况球盖

  upstream nexus-upstream {
    server xxxxxxxx:8081;
  }

  server {
    listen 8080;
    listen [::]:8080;
    server_name xxxxxxxxxxxx;
    client_max_body_size 100M;

    location / {
        proxy_pass http://nexus-upstream;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
  }

#https无需求删除以下字段即可
  server {
        listen 8443;
        server_name xxxxxxxxxxxxx;
        rewrite ^(.*)$ http://xxxxxxxxx$1 break;
    ssl_certificate /etc/cert/server.crt;
    ssl_certificate_key /etc/cert/server.key;
  }
}

3.访问nexus

IP:8081

账号admin

密码

查看。 

 4.创建储存库以及批量上传jar包

 根据自己需求选择(此选项介绍)

一、“maven2” 部分 “maven2” 通常表示遵循 Maven 2 版本的仓库规范和结构。Maven 是一个项目管理和构建工具,Nexus 可以作为 Maven 仓库的代理和托管服务器。

二、“hosted” 部分 “hosted” 类型的仓库是指由用户自己托管在 Nexus 服务器上的仓库。这种仓库主要用于存放组织内部开发的软件构件、第三方无法获取的私有库等。 例如,一个组织可以将自己开发的 Java 项目的 JAR 包、WAR 包等构件上传到这个 hosted 类型的 Maven 2 仓库中,以供内部的 Maven 项目使用。其他类型的仓库还有代理仓库(用于代理外部公共仓库,如 Maven Central)和 group 仓库(用于组合多个其他类型的仓库以方便统一访问)。 如何在 Nexus 中创建和配置 hosted 类型的 Maven 2 仓库? hosted 类型的 Maven 2 仓库有哪些优点和缺点? Nexus 中还有哪些其他类型的仓库?

根据自己需求修改

4.1批量上传jar包

将打包的tar包传到宿主机上解压

gshx是jar包目录结构

4.2创建两个sh脚本 

vim mavenimport.sh 
#!/bin/bash
# copy and run this script to the root of the repository directory containing files
# this script attempts to exclude uploading itself explicitly so the script name is       important
# Get command line params
while getopts ":r:u:p:" opt; do
  case $opt in
    r) REPO_URL="$OPTARG"
    ;;
    u) USERNAME="$OPTARG"
    ;;
    p) PASSWORD="$OPTARG"
    ;;
esac
done

find . -type f -not -path './mavenimport\.sh*' -not -path './upload.sh' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;
 vim upload.sh 
#!/bin/bash
## -u nexus用户名 -p nexus密码 -r 远程仓库地址。
sh mavenimport.sh -u admin -p 123456 -r http://xxxxxxx.com/repository/gshx_Rslease/

仓库地址 URL获取方式(复制进去就可以了)

 4.3执行脚本

 ./upload.sh 

 

 4.4成功验证

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

bug的处理流程是什么?一文教你快速学会bug的处理流程

一、Bug的属性 1、Bug重现环境 这个应该是我们重现bug的一个前提,如果没有这个前提,我们可能会无法重现问题,或者跟本就无从下手。 2、操作系统 这个是一般软件运行的一大前提,基本上所有的软件都依赖于操作系统之上的&#x…

中、美、德、日制造业理念差异

合格的产品依赖稳定可靠的人机料法环,要求减少变量因素,增加稳定因素,避免“熵”增;五个因素中任何一个不可控,批次产品的一致性绝对差; 日本汽车企业,侧重“人”和“环”, 倚重是人…

点工干了三年,快要废了。。。

8年前刚进入到IT行业,到现在学习软件测试的人越来越多,所以在这我想结合自己的一些看法给大家提一些建议。 最近聊到软件测试的行业内卷,越来越多的转行和大学生进入测试行业,导致软件测试已经饱和了,想要获得更好的待…

Android RecyclerView 缓存机制深度解析与面试题

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 引言 RecyclerView 是 Android 开发中用于展示列表和网格的强大组件。它通过高效的缓存机制,优化了滑动性能和内存使用。本文将深入…

nginx进阶篇(二)

文章目录 概图一、 Nginx服务器基础配置实例二、Nginx服务操作的问题三、Nginx配置成系统服务四、Nginx命令配置到系统环境五、Nginx静态资源部署5.1 Nginx静态资源概述5.2 Nginx静态资源的配置指令5.2.1. listen指令5.2.2. server_name指令配置方式匹配执行顺序 5.2.3 locatio…

Linux--守护进程与会话

进程组 概念 进程组就是一个或多个进程的集合。 一个进程组可以包含多个进程。 下面我们通过一句简单的命令行来展示: 为什么会有进程组? 批量操作:进程组允许将多个进程组织在一起,形成一个逻辑上的整体。当需要对多个进程…

js 3个事件监听器 EventListeners

起因, 目的: 我有2个显示器。 某视频网站,我想一边播放视频,一边搞其他。但是,当我把鼠标移动到浏览器外面,点击一下别处, 视频就会自动暂停. 这个叫做 事件监听! blur, 在元素或窗口失去焦点…

I/O流(Java)

目录 1. IO概述 1.1 什么是IO 1.2 IO的分类 1.3 IO的流向说明图解 1.4 顶级父类 2. File类 2.1 概述 2.2 构造方法 2.3 常用方法 2.3.1 获取功能的方法 2.3.2 绝对路径和相对路径 2.3.3 判断功能的方法 2.3.4 创建删除功能的方法 2.3.5 目录的遍历 3. 字节流 3…

【C++ Primer Plus习题】16.7

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: #include <iostream> #include <vector> #include <…

2024CCPC网络赛

vp链接&#xff1a;Dashboard - The 2024 CCPC Online Contest - Codeforces B. 军训 II 序列 a 从小到大排列或者从大到小排列时&#xff0c;不整齐度是最小的。方案数是所有相同数字的个数的排列数的乘积。如果首尾的数字不同的话&#xff0c;还要再乘个 2。 #include <…

高级大数据开发协会

知识星球——高级大数据开发协会 协会内容: 教你参与开源项目提供新技术学习指导提供工作遇到的疑难问题技术支持参与大数据开源软件源码提升优化以互利共赢为原则&#xff0c;推动大数据技术发展探讨大数据职业发展和规划共享企业实际工作经验 感兴趣的私聊我&#xff0c;…

2022年十九届中国研究生数学建模竞赛C题——优秀论文分析

● 引言&#xff1a;因为最近要参加研究生数学建模竞赛了&#xff08;第二十一届&#xff09;&#xff0c;学习和分析一下优秀的数模论文的&#xff1a;思路、写作。 虽然我说是 “优秀论文分析”&#xff0c;但其实更多是 “搬运” 哈哈哈… ✅ NLP 研 1 选手的学习笔记 笔者…

springboot+screw反向生成数据库说明文档

前言 最近公司人员结构调整&#xff0c;被迫接受一位资深老哥哥的活&#xff0c;他也是悲催&#xff0c;太老实了&#xff0c;默默的干活老黄牛&#xff0c;不会叫。又没有山头&#xff0c;直接领导组长也是不给力。哎&#xff0c;哪里都有江湖&#xff0c;愿我码农儿女都能被善…

Android Studio Menu制作

文章目录 一、创建菜单在Activity上新建onCreateOptionsMenu新建menu目录及资源文件新建Menu一级菜单在Activity上加载Menu测试效果 二、菜单点击事件 一、创建菜单 在Activity上新建onCreateOptionsMenu Overridepublic boolean onCreateOptionsMenu(Menu menu) {return supe…

数据结构-3.链表

前言 本篇博客给大家带来的是链表的知识点, 其中包括面试经常会提问的真题 ArrayList 和 LinkedList 的区别 . 文章专栏: Java-数据结构 若有问题 评论区见 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条, 如果分享不成功, 那我就会回你一下,那样你就分享成…

Mysql调优之性能监控(一)

前言&#xff1a; 官网就是最好的老师&#xff1a;MySQL&#xff0c;里面各种语法跟参数跟性能调试工具 一、使用show profile查询剖析工具 -- 开启 SET profiling 1; -- 关闭 SET profiling 0; -- 显示查询的性能分析信息 show profiles; -- 显示具体查询id的执行步骤耗时 S…

免费好用的ppt素材库有哪些?这2个在线网站值得推荐!

ppt素材去哪找&#xff1f; 对于很多做PPT的人来说&#xff0c;做PPT的过程中&#xff0c;不是在找素材&#xff0c;就是在去找ppt素材的路上&#xff0c;想寻找到与内容相匹配的ppt素材&#xff0c;往往占用了大量的时间&#xff0c;且ppt和ppt素材库本身是分离的&#xff0c…

超好用!分享测评10款AI论文写作助手自动生成器

在当今学术研究和写作领域&#xff0c;AI论文写作工具的出现极大地提高了写作效率和质量。这些工具不仅能够帮助研究人员快速生成论文草稿&#xff0c;还能进行内容优化、查重和排版等操作。以下是10款超好用的AI论文写作助手自动生成器&#xff0c;其中特别推荐千笔-AIPassPap…

AI带货直播虚拟主播的生成代码!

随着AI技术的飞速发展&#xff0c;AI带货直播虚拟主播已成为电商行业的新宠&#xff0c;这些虚拟主播不仅能24小时不间断地进行直播&#xff0c;还能通过智能互动提升用户体验&#xff0c;为商家带来更多的销售机会&#xff0c;本文将分享五段关键源代码&#xff0c;帮助读者了…

手写Spring第二篇,实现一个超级无敌爆炸简单的Spring工厂

今天开始我要手写一个Spring&#xff0c;就是这么膨胀。小小Spring&#xff0c;拿下&#xff01;注意是小小Spring哈&#xff0c;不是Spring本体&#xff0c;毕竟本体连看懂都难&#xff0c;就别说能充分理解然后手写出来。 本次手写Spring全程参考 第01章&#xff1a;开篇介绍…