# 在docker中通过Verdaccio搭建一个私有npm库
# 拉取镜像
- 执行docker pull verdaccio/verdaccio命令,在docker中拉取最新的Verdaccio镜像
# 获取配置文件
- 执行 - mkdir -p ~/docker/demo命令,在根目录下创建docker文件夹,demo子文件夹用于拉取verdaccio项目 (opens new window)
- 执行 - cd ~/docker/demo命令进入demo件夹, 执行- git clone https://github.com/verdaccio/verdaccio命令,拉取verdaccio项目
- 执行 - cd verdaccio命令进入项目文件夹, 执行- git checkout -b 5.x origin/5.x命令,切换到"5.x"这个分支
- 执行 - cd docker-examples命令进入docker-examples文件夹, 执行- mv docker-local-storage-volume ~/docker/verdaccio将docker-local-storage-volume下的配置文件移动到docker下新建的verdaccio文件夹
- 执行 - chown -R 10001:65533 ~/docker/verdaccio设置文件权限,docker环境下verdaccio容器中用户不是当前系统用户
# 启动镜像
- 执行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/下文以此为例)
 
  
 # 发布包
- 有nrm的可以通过 - nrm add 仓库命 仓库地址增加一个源,如- nrm add verdaccio http://192.168.99.100:4873/, 没有的- npm set registry http://192.168.99.100:4873/,就是每次切换都要输url太麻烦
- 执行 - npm adduser,按提示输入用户名、密码、邮箱增加用户,也可以自己去配置文件- docker\verdaccio\conf\htpasswd下手动加
- 执行 - npm login登录
- 在要发布的包目录下执行 - npm publish
- 撤销包可用 - npm unpublish 包名 --force
 
 # 报错
- 如果有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
