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

时间:2024-03-27 16:34:57

自己的前端组在开发react-native用到很多封装的包,私有仓库是很有必要的,之前使用过nexus的npm仓库。verdaccio相比界面化更亲近,配置相对来说也比较方便。
本文是用docker配置,如果直接配置的话非常简单这里就不说了

1.拉取verdaccio的docker镜像
 docker pull verdaccio/verdaccio
2.在用户根目录下创建docker文件夹存放verdaccio配置文件
mkdir -p ~/docker
cd /data/demo

从git拉取示例demo并且cd到目录下

git clone https://github.com/verdaccio/docker-examples
cd docker-examples

移动配置文件到第一步创建的文件夹

mv docker-local-storage-volume ~/docker/verdaccio

给予文件夹权限

chown -R 100:101 ~/docker/verdaccio

启动镜像

docker run --name verdaccio -itd -v ~/docker/verdaccio:/verdaccio -p 4873:4873 verdaccio/verdaccio

这时候可以先查看服务地址加端口号4873,如下图这样就是运行成功了
npm私有仓库verdaccio在docker环境下的配置

3.修改配置文件
cd ~/docker/verdaccio/conf
vim  conf.yaml

修改镜像源publish和install权限

uplinks:
  npmjs:
    url: http://registry.npm.taobao.org/   淘宝镜像

packages:
  '@jota/*':
      access: $all
      publish: $all

  '@*/*':
    # scoped packages
    access: dreamfan
    publish: dreamfan
    proxy: npmjs

  '**':
    # allow all users (including non-authenticated users) to read and
    # publish all packages
    #
    # you can specify usernames/groupnames (depending on your auth plugin)
    # and three keywords: "$all", "$anonymous", "$authenticated"
    access: $authenticated    拉取权限,默认为$all,$authenticated是已注册用户

    # allow all known users to publish packages
    # (anyone can register by default, remember?)
    publish: dreamfan      publish权限,默认为$all,这里改为我配置的用户名

    # if package is not available locally, proxy requests to 'npmjs' registry
    proxy: npmjs

其他相关配置可以参考snopia的配置文件,几乎差不多

4.添加用户

注:这里因为内部使用,关闭了npm注册权限,直接注册两个账号控制publish权限,如果不需要做权限控制直接忽略这一步。

配置用户

cd ~/docker/verdaccio/conf
vim  htpasswd

在注册用户文件中添加用户,用户名加密码的base64 encode
可以在(http://www.htaccesstools.com/htpasswd-generator/)这个网站中直接转换,将生产的一串码复制到htpasswd中

docker restart verdaccio

重启一下verdaccio生效配置

5.登录

这就已经配置完成了,之后可以使用nrm切换到你的镜像源
npm login登录配置过的账号密码即可
如果没有配置权限直接npm adduser就可以