kong+Verdaccio+ldap(docker)

2023-10-27

需求

使用Kong来代理Verdaccio,实现直接通过域名+path的方式来访问,并且Verdaccio使用ldap来管理

前提

Kong+ldap已部署好,并且也部署好了Kong Dashboard 。(后面有需求再写关于Kong代理的各种设置)

搭建过程

思路:为了实现数据安全,保证高可用性,先正常启动一遍Verdaccio,把需要挂载的目录docker cp 到本地先,移除之前的容器,通过挂载目录的方式再已启动一遍,通过修改外部的配置文件+重启容器来实现我们需要的功能

–第一次启动容器

docker run -d --name verdaccio -p 4873:4873 --restart always  verdaccio/verdaccio

然后我是把/verdaccio这个目录下的3个文件都复制出来(conf当的是配置文件,plugins是插件,storage上传的包)
在这里插入图片描述
然后rm掉容器,通过挂载的方式再启动一遍

docker run -d \
--name verdaccio \
--network host \
--restart always \
--volume /sfere/verdaccio/conf:/verdaccio/conf \
--volume /sfere/verdaccio/plugins:/verdaccio/plugins \
--volume /sfere/verdaccio/storage:/verdaccio/storage \
verdaccio/verdaccio
  1. 首先先实现与ldap的集成
    Verdaccio是有现成的插件可以用的,npm库里面直接可以找到,这边直接贴上url
    https://www.npmjs.com/package/verdaccio-ldap
    按照官方给的文档,我们先进入到容器中安装ldap的插件

    npm install verdaccio-ldap
    

    注意:
    下载好直接,需要再运行下 命令npm i 把依赖包都下载下来,这个官方文档上没说,如果不下载的话,在加载ldap插件的时候Verdaccio会报错,找不到很多模块,一个个去下肯定不现实

    接下来修改Verdaccio配置文件(config.yaml)中的 auth部分
    在这里插入图片描述
    到这一步,与ldap的集成是可以了,等Kong的代理设置好之后一起验证

  2. 设置Kong的代理
    其实在设置Kong的代理的时候,难点不是在于如何去设置server和route,而是代理会导致Verdaccio本身很多请求路径的改变,导致很多资源not found(我的Kong改过端口,监听8090)
    在这里插入图片描述
    在这里插入图片描述
    路由中勾选丢弃Path

    然后这时候你访问你Verdaccio的地址,界面都出不来,然后你F12打开会看到很多静态资源找不到。一般正常时候的做法,会为这些静态资源再去做路由,但是Verdaccio比较特殊,你即使为它做了所需的所有路由,有些关键api它还是会找不到。最后参考https://github.com/verdaccio/verdaccio/issues/1112 ,在Verdaccio的配置文件中直接固定好请求的前半部部分,同时注意,我在配置文件中额外加了一段配置 max_body_size: 1000mb ,这个是控制npm 上传包时候的大小,如果不添加,默认值是很小的,上传的时候超过限额会报错。
    在这里插入图片描述
    然后配置文件剩下的部分(上游地址,上传下载权限等)根据情况自定义吧。这时候你再保存配置文件,重启Verdaccio的容器,在日志中可以发现,已加载ldap插件,而且可以正常访问web页面,使用ldap账户登陆
    在这里插入图片描述

  3. 测试上传下载
    切换到本地PC机上,打开类cmd工具,设置默认仓库地址,先试试npm login,这时候可以使用-d参数,打印出过程 .登陆账密和邮箱,然后使用npm whoami 验证是否登陆成功

    npm set registry https://xx.xxx.com:8090/npm
    npm login -d
    npm whoami -d
    

    在这里插入图片描述
    接下来测试上传代码 npm publish
    如果按照我一样,是把Verdaccio中那3个目录都挂载出来的挂,是会报错的,提示找不到你上传的包,具体可以参考下面的url
    https://github.com/verdaccio/verdaccio/issues/483
    这个问题也折腾了我好久,百度半天都没用,还是在项目中的问题提交处找到一个类似情况,查比较偏的问题还是建议大家多google和逛github。其实就是 存储包的 storage 权限问题导致的,为了方便我就直接777了

    chmod -R 777 storage 
    

    这时候再publish就没问题了

    然后第二个坑的来了,npm install 下载我们刚刚上传的包。如果你的项目比较大,那肯定会报错 “504 Gateway Time-out”
    在这里插入图片描述
    这个问题其实百一下就知道了,是nginx的默认限制太小,导致的
    参考url:https://www.cnblogs.com/youn/p/5345506.html

    那我们直接去改kong里面nginx的配置即可

    vi /usr/local/kong/nginx-kong.conf
    

    在这里插入图片描述
    重载nginx

    /usr/local/openresty/nginx/sbin/nginx  -s reload -p /usr/local/kong -c nginx.conf
    

    最后就可以正常下载了。整个流程就打通了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

kong+Verdaccio+ldap(docker) 的相关文章

随机推荐

  • jar包class冲突:spark任务执行异常-java.lang.NoSuchMethodError: org.apache.hadoop.fs.PartialListing

    问题描述 提交到yarn集群后任务报错 报错信息如下 java lang NoSuchMethodError org apache hadoop fs PartialListing 根据报错信息 初步估计是jar包冲突或者不同jar包有同名
  • 微信小程序实现当前页面更新上一个页面

    日常项目中需要实现的一个价格脱敏功能 通过点击页面二中的查看完整信息 点击回退按钮实现页面一中的价格显露出来 通过查询了大量资料发现 大多数都是通过调用上一个接口的onload 或者onshow 实现视图更新 经测试后 发现 无法实现 只能
  • C# 父类实现的 IEquatable<T> 接口,重写的相等性判断函数都能被子类继承

    实验代码 Son s1 new s2 new Console WriteLine s1 s2 s1 s2 Console WriteLine Console WriteLine s1 s2 s1 s2 Console WriteLine C
  • 多媒体计算机的媒体信息包括文字,多媒体计算机中的媒体信息是指什么

    多媒体计算机中的媒体信息是指 数字 文字 声音 图像 动画 视频影像等 文本是以文字和各种专用符号表达的信息形式 图像是多媒体软件中最重要的信息表现形式之一 动画是快速播放一系列连续运动变化的图形图像 视频影像具有时序性与丰富的信息内涵 本
  • Halcon判断一个点是否在某个区域

    Index of all regions containing a given pixel read image Image fabrik dev close window dev open window 0 0 512 512 black
  • Vue + ElementUI 实现后台管理系统模板 -- 前端篇(九):使用 iframe 标签嵌套页面 及内容顶部tab页签

    一 使用 iframe 标签嵌套页面 1 简单了解一下 1 什么是 iframe iframe 标签会创建一个行内框架 包含另一个文档的内联框架 简单地理解 页面中嵌套另一个页面 2 使用场景 有的项目需求 需要在当前页面中显示外部网页 比
  • 给wordpress添加关键词与描述

    Wordpress网站的关键字及网页描述关系网站对搜索引擎的友好程度 如果自己手动加显然太折腾了 那如何让WordPress博客自动为每篇文章自动关键字及网页描述 每篇文章的内容不同 我们该如何让wordpress自动添加文章描述和关键词呢
  • Heyperledger Fabric 运行时架构

    一 运行时架构图 逻辑架构图说明了Heyperledger Fabric 的各个核心组件 模块 由于Heyperledger Fabric 是一个需要保证交易数据安全的分布式系统 所以再实际运行时将不同的服务器配置成为不同的Node 节点
  • allegro中网表的导入与器件放置

    文章目录 封装库路径的指定 网表导入 器件放置 自动器件放置 手动器件放置 room器件放置 封装库路径的指定 Setup User Perference Paths Library中zhi dzhid 特别关注一下三个路径 devpath
  • 小程序开发——比较好看的登录界面设计

    主要代码 login wxml
  • Windows10开机自动运行批处理、脚本等的方法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 方法 步骤 一 打开我的电脑 在地址栏输入 C ProgramData Microsoft Windows Start Menu Programs Startup 二 把自
  • 彻底解决乱码问题(附一):简体中文编码中区位码、国标码、内码、外码、字形码的区别及关系

    首先声明这篇博客的创作过程 大部分文本来自 笨笨阿林 的原创文章 我在看完后加入了部分自己的理解 有些地方做了略微调整 比如将有些不易理解的地方重新解释 多余的话删除等 也在最后加入了一个例子来证实了一下在GB2312编码下从区位码到实际在
  • vue3-print-nb 实现页面打印(含分页打印)

    安装vue3 print nb npm install vue3 print nb save 引用vue3 print nb 全局引入 全局引用 import createApp from vue import App from App v
  • 左程云算法笔记(三)堆排序、桶排序、排序总结

    左程云算法笔记 三 堆 堆结构 堆排序 堆排序扩展题 桶排序 计数排序 基数排序 补 桶排序 补 希尔排序 排序总结 稳定性 综合比较 常见的坑 工程上对排序的改进 堆 堆结构 1 堆结构就是用数组实现的完全二叉树结构 2 完全二叉树中如果
  • Spring Boot使用(基础)

    目录 1 Spring Boot是什么 2 Spring Boot使用 2 1Spring目录介绍 2 2SpringBoot的使用 1 Spring Boot是什么 Spring Boot就是Spring脚手架 就是为了简化Spring开
  • 权重设计介绍

    相关产品 RocketMQ 之前在阿里的 负载均衡 比赛中 就有这个算法 RocketMQ 中包含多种负载算法 其中 权重 算法就属于其中一种 也是最实用的一种 奖励系统 经常会有许多活动 或则任务 当用户完成后 可以获得相关的奖励 当然可
  • 华为OD机试 - 评论转换输出(Java)

    题目描述 在一个博客网站上 每篇博客都有评论 每一条评论都是一个非空英文字母字符串 评论具有树状结构 除了根评论外 每个评论都有一个父评论 当评论保存时 使用以下格式 首先是评论的内容 然后是回复当前评论的数量 最后是当前评论的所有了评论
  • 操作系统内核

    现代操作系统一般将OS划分为若干个层次 再将OS的不同功能分别设置在不同的层次中 通常将一些与硬件紧密相关的模块 如中断处理程序等 各种常用及运行频率较高的模块 如时钟管理 进程调度和许多模块所公用的二些基本操作 都安排在紧靠硬件的软件层次
  • vue生命周期

    随着对 vue 的不断了解 会越来越发现它生命周期的重要性 只有了解了它的生命周期 才能在开发项目的时候在逻辑上的很好的判断什么时候该发生什么事件 即很好的控制页面 一 什么是 vue 生命周期 Vue 实例从创建到销毁的过程 就是生命周期
  • kong+Verdaccio+ldap(docker)

    需求 使用Kong来代理Verdaccio 实现直接通过域名 path的方式来访问 并且Verdaccio使用ldap来管理 前提 Kong ldap已部署好 并且也部署好了Kong Dashboard 后面有需求再写关于Kong代理的各种