NPM 私有仓库

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/"
    }
  1. 终端控制台,输入
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]

猜你喜欢

转载自blog.csdn.net/black0707/article/details/123714233