Verdaccio 是一个轻量级的、可扩展的、私有的 npm registry 服务器,它允许开发人员在本地网络环境中创建和管理自己的 npm packages,从而加速应用程序的开发和部署。使用 Verdaccio,开发人员可以在不将其代码发布到公共 npm registry 上的情况下共享和重用自己的 npm packages。
本文将记录 Verdaccio 本地部署方法,以下操作均在Linux环境下进行。
bashdocker run -it -p 4873:4873 --name verdaccio centos bash
bash# 下面两个安装方式,任选其一就行
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
source ~/.bashrc
nvm --version # 可查看nvm版本,说明安装成功
bash nvm install v10.16.0 # 安装node的稳定版本(npm会同步当前版本的node)
bashnpm install -g verdaccio --registry=https://registry.npm.taobao.org/ npm install -g pm2 --registry=https://registry.npm.taobao.org/
配置修改注意:配置项前面多个空格,都无法加载。需严格区分空格
config默认存放路径:/root/.config(需启动一次后才会出现verdacci文件夹)
bashverdaccio # 首次启动自动创建verdacci文件夹,启动后关闭
cd /root/.config/verdaccio
vi config.yaml # 修改配置
config.yaml修改如下(部分配置需要提前运行命令)
yaml# ①.端口号配置
listen:
0.0.0.0:4873
# ②.上行链路修改为淘宝镜像源
uplinks:
taobaojs:
url: https://registry.npm.taobao.org/
packages:
'**':
access: $all
publish: $authenticated
unpublish: $authenticated
proxy: taobaojs
# ③.日志配置
# 运行:mkdir log
# 在verdaccio目录下创建log,存放log日志(不提前创建,会报错)
# tip:到本次修改后,pm2 start verdaccio开启服务,查看服务是否正常启动
logs:
- {type: rotating-file, format: json, path: /root/.config/verdaccio/log/log.json, level: http, options: {period: 1d, count:3} }
# ④.LDAP配置(禁止命令行注册,LDAP登录,编辑htpasswd创建用户)
# 参数讲解:
# htpasswd如果不加,效果是一样的,禁止注册
# htpasswd添加进去有个好处是,可以通过htpasswd文件创建用户
# LDAP插件安装:
# 运行:npm install -g verdaccio-ldap --registry=https://registry.npm.taobao.org/ 全局安装ldap插件
# 查看是否可以成功启动,如果无法启动,尝试
# 运行:npm install verdaccio
# 运行:npm install
# tip:邮箱全名无法登录,只能使用名字登录,
# 比如chenchongzuan@baishishuju.cn无法登录,使用chenchongzuan可以进行登录
ldap:
type: ldap
client_options:
url: "ldap://192.168.50.203:389"
searchBase: "ou=Tech,ou=Users,dc=ankang,dc=com"
searchFilter: "(uid={{username}})"
reconnect: true
htpasswd:
file: ./htpasswd
max_users: -1
# ⑤.包权限修改(任何用户均可发布私有包,只有root用户才可以撤销私有包,私有包存放在company路径下)
packages:
'c-*':
access: $all
publish: $authenticated
unpublish: root
storage: company
'company-*':
access: $all
publish: $authenticated
unpublish: root
storage: company
'**':
access: $all
publish: $authenticated
unpublish: root
proxy: taobaojs
创建脚本
bashvi start.sh
start.sh脚本内容如下:
bash#!/bin/bash
source ~/.bashrc #(或者尝试source /etc/profile)
pm2 start verdaccio
tail -f /dev/null
修改后,继续执行以下命令
bashchmod u+x *.sh # 给予脚本启动权限
./start.sh # 运行./start.sh查看脚本是否可以正常启动
docker commit verdaccio docker/verdaccio # 将verdaccio容器打包成docker/verdaccio镜像
编写Dockerfile,Dockerfile内容如下:
FROM docker/verdaccio WORKDIR /root/.config/verdaccio ENTRYPOINT ["./start.sh"]
创建镜像
bashdocker build -t docker.privete/verdaccio /dockerFile/verdaccio/ # 以 /dockerFile/verdaccio/下的Dockfile为配置进而创建镜像,镜像名为docker.privete/verdaccio
创建容器
bashdocker run -itd -p 4873:4873 --restart=always -v /opt/verdaccio-registry/storage:/root/.config/verdaccio/storage -v /opt/verdaccio-registry/log:/root/.config/verdaccio/log --name front-end-registry docker.privete/verdaccio
# 1.端口映射4873 -d(开启后台进程)
# 2. --restart=always 关闭时,会自动重启,比如进入容器时,exit退出,容器会自动重启,比如docker start -i 进入,退出后,也会自动重启。除非手动stop
# 3.
# 主机的/opt/verdaccio-registry/storage的文件夹映射到容器的/root/.config/verdaccio/storage(包)
# /opt/verdaccio-registry/log的文件夹映射到容器的/root/.config/verdaccio/log(日志)
# 当主机不存在文件夹时,会自动创建
# 4.容器名字为front-end-registry,以 docker.privete/verdaccio镜像为基础
--------------------完结--------------------
packages 权限配置:
权限:
本文作者:BARM
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!