NPM 私有仓库
地址:https://verdaccio.org/zh-CN/docs/docker
一、服务器安装
1、登录服务器
登录仓库服务器,如果账号不是root 需要关键命令前加上sudo。
2、创建安装主目录
sudo mkdir verdaccio
cd verdaccio
3、下载镜像verdaccio
docker pull verdaccio/verdaccio
4、编写docker-compose文件
#拷贝“使用docker-compose”小节配置。
sudo vi docker-compose.yaml
#将“使用docker-compose”内容拷贝到yaml文件中,并wq!退出并保存。
——可选项:机器重启自动启动容器
version: '3.1'
services:
verdaccio:
image: verdaccio/verdaccio
container_name: "verdaccio"
restart: always
networks:
- node-network
environment:
- VERDACCIO_PORT=4873
ports:
- "4873:4873"
volumes:
- "./storage:/verdaccio/storage"
- "./config:/verdaccio/conf"
- "./plugins:/verdaccio/plugins"
networks:
node-network:
driver: bridge
5、运行docker-compose
sudo docker-compose up
默认会提示错误:
cannot open config file /verdaccio/conf/config.yaml: Error: CONFIG: it does not look like a valid config file
原因说明:
docker-compose文件中外挂了3中卷文件,conf、log、storage
该卷目的是将系统配置文件永久保留便于迁移
Verdaccio在docker中使用uid=10001,该账号没有root权限;同时缺少config.yaml的映射。
6、更改授权
cd ..
sudo chown -R 10001:65533 verdaccio
7、增加配置文件
cd verdaccio/config
sudo vi config.yaml
#拷贝https://github.com/verdaccio/verdaccio/blob/5.x/conf/docker.yaml内容到config.yaml
# path to a directory with all packages
storage: /verdaccio/storage/data
# path to a directory with plugins to include
plugins: /verdaccio/plugins
# https://verdaccio.org/docs/webui
web:
title: Verdaccio
auth:
htpasswd:
file: /verdaccio/storage/htpasswd
# a list of other known repositories we can talk to
uplinks:
npmjs:
url: https://registry.npmjs.org/
packages:
'@*/*':
# scoped packages
access: $all
publish: $authenticated
unpublish: $authenticated
proxy: npmjs
'**':
# allow all users (including non-authenticated users) to read and
# publish all packages
# three keywords: "$all", "$anonymous", "$authenticated"
access: $all
# allow all known users to publish/publish packages
# (anyone can register by default, remember?)
publish: $authenticated
unpublish: $authenticated
# if package is not available locally, proxy requests to 'npmjs' registry
proxy: npmjs
server:
keepAliveTimeout: 60
middlewares:
audit:
enabled: true
8、修改授权
sudo vi config.yaml
修改package节的授权配置
'@*/*': 节
access由$all 改为 $authenticated
——目的,所有Pull指令均需要账号认证。
publish由 $authenticated修改为admin
——目的,所有向服务器发布包需要管理员admin账号。
'**':节
同上修改。
9、启动服务
cd ..
docker-compose up
10、辅助命令
查看日志
docker logs --tail 20 verdaccio
11、创建管理员账号
npm adduser --registry http://192.168.xxx.xxx:4873
username:admin
password:[yourpsw]
email:[yourmail]
cat ~/.npmrc
//192.168.xxx.xxx:4873/:_authToken="XXXXXiXXXXXXXXXXXXX"
重要:记录admin的tocken到记事本中,为后续项目引用、CI&CD使用。
12、创建只能拉取的账号
npm adduser --registry http://192.168.xxx.xxx:4873
username:pulluser
password:[yourpsw]
email:[yourmail]
cat ~/.npmrc
//192.168.xxx.xxx:4873/:_authToken="XXXXXiXXXXXXXXXXXXX"
重要:记录pulluser的tocken到记事本中,为后续项目引用、CI&CD使用。
13、重启docker
docker ps
docker restart [verdaccioid]
二、访问仓库
访问网站:
http://192.168.xxx.xxx:4873/
登录:admin/[yourpsw]
三、项目配置
1、发布NPM包到服务器
1)打开项目,输入npm whoami 验证当前的登录
2) 在项目根目录创建.npmrc
3)配置内容:
always-auth=true
registry=http://192.168.xxx.xxx:4873/
//192.168.xxx.xxx:4873/:_authToken='[admin's token]'
4)修改项目package.json
-- "private": false
-- "name": "[npm name what you want]"
-- "publishConfig": {
"registry": "http://192.168.xxx.xxx:4873/"
}
- 终端控制台,输入
npm publish --registry http://192.168.xxx.xxx:4873/
2、应用NPM包
1)在项目根目录创建.npmrc
2)配置内容:
always-auth=true
registry=http://192.168.xxx.xxx:4873/
//192.168.xxx.xxx:4873/:_authToken='[pulluser's token]'
3)终端控制台,输入
npm i --registry http://192.168.xxx.xxx:4873/ [npm name what you want]
3、移除NPM包【谨慎操作】
npm unpublish --force [yourPackage]