使用 docker + verdaccio 搭建npm私有仓库

更新日期: 2021-11-22阅读量: 204标签: docker

本文介绍如何使用 verdaccio 搭建私有npm仓库,以及使用 docker 时如何映射到本地目录,方便简单对仓库进行各种操作。系统环境是 Linux。

verdaccio

verdaccio 是一个开源的轻量的私有 npm proxy registry (npm 代理资源库),安装使用都非常方便。
forked自 sinopia@1.4.0。

安装

使用 npm / yarn 进行全局安装

Node.js v12+

npm 4.x+ 或yarn

全局安装

npm install -g verdaccio

yarn global add verdaccio

启动

verdaccio

或者使用 pm2 start verdaccio

使用浏览器访问web服务,端口号4873,http://0.0.0.0:4873,访问成功就可以了。

使用 docker 镜像安装

安装 docker,略

在 docker 下安装 verdaccio 镜像
使用如下命令即可:

docker pull verdaccio/verdaccio

安装镜像成功:

运行 verdaccio,使用 docker 命令运行镜像,创建 verdaccio 容器

// 名称verdaccio, 端口 4873
docker run -it --name verdaccio -p 4873:4873 verdaccio/verdaccio

启动容器成功:

启动成功以后,实际上就可以在浏览器访问了,http://0.0.0.0:4873。
接下来先介绍几个操作容器的 docker 命令。

docker 操作容器的部分命令

新建并启动:docker run CONTAINER
启动停止的容器:docker start CONTAINER_ID
查看容器:docker container ls (docker ps)
停止容器:docker stop CONTAINER_ID
删除容器:docker rm CONTAINER_ID

映射本地目录

首先,创建 /home/verdaccio 目录,以下在该目录下操作。
其次,创建 conf 目录,并添加 verdaccio 的 config.yaml 配置文件。
接着处理映射目录,一般有以下两种方式:

直接映射本地目录,启动 verdaccio

docker run -it --name verdaccio -p 4873:4873 -v /home/verdaccio/storage:/verdaccio/storage -v /home/verdaccio/conf:/verdaccio/conf -v /home/verdaccio/plugins:/verdaccio/plugins verdaccio/verdaccio

-v:容器目录映射到本地目录

或者使用 docker-compose 启动
添加 docker-compose.yml 文件,使用 docker-compose up 命令启动

version: '3'
services:
  verdaccio:
    image: verdaccio/verdaccio
    container_name: "verdaccio"
    network--mode: "bridge"
    environment:
      - VERDACCIO_PORT=4873
    ports:
      - "4873:4873"
    volumes:
      - "/home/verdaccio/storage:/verdaccio/storage"
      - "/home/verdaccio/conf:/verdaccio/conf"
      - "/home/verdaccio/plugins:/verdaccio/plugins"
    network_mode: "bridge"

注意: 本地目录 /home/verdaccio/storage 需要设置权限,不然会因为权限问题而导致操作失败。

chown -R 10001:65533 /home/verdaccio/storage

本地目录映射成功后,会简化很多操作,比如:
在 /home/verdaccio 目录下会创建 storage 目录,如果发布了包,则在此目录下的 data 中能找到对应的包文件夹,可以查看所有上传的npm包,此处也可以直接删除该包
也会在 conf 映射到配置文件,方便我们需要时修改配置信息。

拷贝 verdaccio 配置文件

如果不想做本地目录映射,也可以使用如下命令,拷贝出 verdaccio 镜像的配置文件。
docker cp:在容器和本地文件系统之间,拷贝文件或文件夹。

docker cp verdaccio:/verdaccio/conf/config.yaml /home

私有库部署成功

verdaccio 安装启动成功后,就可以直接网络访问。
当页面出现下图所示,就表示私有库搭建成功,后续就可以进行私有包的发布下载。

发布一个包

有了私有库以后,就可以在其上发布 npm 包。
但初始化时需要先添加用户,设置用户名和密码等,然后就可以直接发包了。

添加用户

npm adduser --registry http://0.0.0.0:4873/

输入用户名、密码和邮箱。

publish

当需要把某个项目发布到私有库时,直接 publish。

npm publish --registry http://0.0.0.0:4873/

发布成功后,刷新页面,就能看到最新发布的包。

install

在项目目录下增加 .npmrc 文件,指定仓库地址。

registry=http://0.0.0.0:4873/

使用 npm install 包名,即可安装私有包了。

verdaccio 配置文件解读

常用配置如下:

  # 素有包的保存路径
  storage: /verdaccio/storage/data
  # 插件的保存路径
  plugins: /verdaccio/plugins

  # 通过web访问
  web:
    title: Verdaccio

  # 账号密码文件,初始不存在
  auth:
    htpasswd:
      file: /verdaccio/storage/htpasswd
      # max_users:1000
      # 默认1000,允许用户注册数量。为-1时,不能通过 npm adduser 注册,此时可以直接修改 file 文件添加用户。

  # 本地不存在时,读取仓库的地址
  uplinks:
    npmjs:
      url: https://registry.npmjs.org

  # 对包的访问操作权限,可以匹配某个具体项目,也可以通配
  # access 访问下载;publish 发布;unpublish 取消发布;
  # proxy 对应着uplinks名称,本地不存在,去unplinks里取

  # $all 表示所有人都可以执行该操作
  # $authenticated 已注册账户可操作
  # $anonymous 匿名用户可操作
  # 还可以明确指定 htpasswd 用户表中的用户,可以配置一个或多个。
  packages:
    '@*/*':
      access: $all
      publish: $authenticated
      unpublish: $authenticated
      proxy: npmjs

    '**':
      access: $all
      publish: $authenticated
      unpublish: $authenticated
      proxy: npmjs

  # 服务器相关
  sever:
    keepAliveTimeout: 60

  middlewares:
    audit:
      enabled: true

  # 日志设定
  logs: { type: stdout, format: pretty, level: http }
站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: https://www.fly63.com/article/detial/10829

docker镜像加速技巧

由于总所周知的原因,国外很多服务无法访问。比如docker镜像。所以就有了很多国内镜像的说法。配置国内镜像可以极速下载镜像。有很多人文章教你配置国内docker镜像,这边简单说一下:

Docker部署ngnix静态网站

首先获取ngnix镜像(默认的是最新版),先来编写一个最简单的Dockerfile,一个Dockerfile修改该Nginx镜像的首页.Dockerfile是一个文本文件,其中包含了若干条指令

值得推荐的 Docker 安全开源工具

在容器安全方面,有很多使用开源工具阻止安全灾难的故事,例如前不久发生的特斯拉 Kubernetes 集群入侵事件。容器的安全性一直是一件很棘手的事情,因此如何巧妙使用开源工具就成为一件重要的事情。

Docker---大型项目容器化改造

虚拟化和容器化是项目云化不可避免的两个问题。虚拟化由于是纯平台操作,一个运行于linux操作系统的项目几乎不需要做任何改造就可以支持虚拟化。而项目如果要支持容器化则需要做许多细致的改造工作。

内部集群的 DNS server 搭建

当我们使用 traefik 反向代理和自动服务发现后,我们对集群内部的服务分为两类:公有服务。如我的博客,网站,以及为它们提供服务的 API。我们可以通过公有的域名去映射服务使得外网能够访问

开发人员爱Docker的10个理由

Stack Overflow开发人员调查中,开发人员将Docker评为:最受欢迎的平台,最喜欢的平台,最常用的平台。来自世界各地的近90,000名开发人员对调查做出了回应。

如何从单独的容器调试运行中的Docker容器?

容器非常适合封装软件,但是有时一味地改造容器镜像以使其尽可能小时,您可能走得太远。我们需要在“简洁”的镜像和无法调试的镜像之间找到很好的平衡。看到人们调试正在运行的容器的正常方法

npm私有仓库 配置verdaccio在docker环境

前端开发过程中,少不了自己封装一些通用的包,但又不想放在公共的平台,所以搭建一个npm私有的仓库是很有必要的。在这里简单介绍如何使用 verdoccio 在docker环境下的配置。verdoccio,轻量级私有npm代理注册表。

ASP.NET Core 如何在运行Docker容器时指定容器外部端口(docker compose)

所以我们可以通过修改docker compose的配置文件来完成我们的需求。熟悉Docker的都应该知道容器运行时其内部会有一个端口以映射到我们外部的端口,我们需要固定的就是这个外部端口。

使用 docker 高效部署你的前端应用

Docker 变得越来越流行,它可以轻便灵活地隔离环境,进行扩容,运维管理。对于业务开发者而言,随着持续集成的发展,对代码质量及快速迭代的要求也越来越高。对于前端而言,在 CI 环境中使用也更容易集成开发,测试与部署。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!