# 在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