# 在docker中通过Verdaccio搭建一个私有npm库

# 拉取镜像

  1. 执行docker pull verdaccio/verdaccio命令,在docker中拉取最新的Verdaccio镜像

# 获取配置文件

  1. 执行mkdir -p ~/docker/demo命令,在根目录下创建docker文件夹,demo子文件夹用于拉取verdaccio项目 (opens new window)

  2. 执行cd ~/docker/demo命令进入demo件夹, 执行git clone https://github.com/verdaccio/verdaccio命令,拉取verdaccio项目

  3. 执行cd verdaccio命令进入项目文件夹, 执行git checkout -b 5.x origin/5.x命令,切换到"5.x"这个分支

  4. 执行cd docker-examples命令进入docker-examples文件夹, 执行mv docker-local-storage-volume ~/docker/verdaccio将docker-local-storage-volume下的配置文件移动到docker下新建的verdaccio文件夹

  5. 执行chown -R 10001:65533 ~/docker/verdaccio设置文件权限,docker环境下verdaccio容器中用户不是当前系统用户

# 启动镜像

  1. 执行docker run --name verdaccio -itd -v ~/docker/verdaccio/conf:/verdaccio/conf -v ~/docker/verdaccio/storage:/verdaccio/storage -p 4873:4873 verdaccio/verdaccio命令启动镜像, 此时通过docker ps -a可以看到容器已经启动,访问4873端口可以看到仓库已经好了(我自己的dockerIP是http://192.168.99.100:4873/下文以此为例)
docker verdaccio

# 发布包

  1. 有nrm的可以通过nrm add 仓库命 仓库地址增加一个源,如nrm add verdaccio http://192.168.99.100:4873/, 没有的npm set registry http://192.168.99.100:4873/,就是每次切换都要输url太麻烦

  2. 执行npm adduser,按提示输入用户名、密码、邮箱增加用户,也可以自己去配置文件docker\verdaccio\conf\htpasswd下手动加

  3. 执行npm login登录

  4. 在要发布的包目录下执行npm publish

  5. 撤销包可用npm unpublish 包名 --force

已发布的包

# 报错

  1. 如果有docker verdaccio one of the uplinks is down, refuse to publish报错, 则需要修改配置文件docker\verdaccio\conf\config.yaml,在文件后面加上
## Special packages publish configurations
publish:
## This will allow the publisher to publish packages even if any uplink is down.
  allow_offline: true
config