部署 npm 私服
和 gitea 类似, github 虽然功能完善简单易用, 但是私有仓库和部分功能收费的 所以一些企业选择使用自己部署 gitea 私服来管理代码, npm 私服也是如此 npmjs.org 虽然也足够好用, 但是私有仓库是收费的, 如果要发布一些非开源的包, 就需要自己搭建 npm 私服
verdaccio
verdaccio 是一个轻量级的 npm 私服, 它可以快速部署, 简单易用, 功能也比较全面, 适合个人和小型团队使用
但是由于 verdaccio 没有提供 docker-compose.yaml
文件, 所以我们需要自己编写 docker-compose.yaml
来启动
拉取镜像
sh
# 注意拉取的版本
docker pull verdaccio/verdaccio:6
运行一个容器并获得默认的配置文件
sh
docker run --name verdaccio_tmp -p 4873:4873 verdaccio/verdaccio:6
docker cp verdaccio_tmp:/verdaccio ./verdaccio
# 停止并删除临时容器
docker stop verdaccio_tmp
docker rm verdaccio_tmp
容器中复制的配置文件如下:
txt
./verdaccio/
├── conf
│ └── config.yaml
├── plugins
└── storage
编写 docker-compose.yaml
映射端口, 挂载数据卷, 配置环境变量等
yaml
services:
verdaccio:
image: verdaccio/verdaccio:6
container_name: verdaccio
networks:
- node-network
ports:
- "4873:4873"
volumes:
- "./storage:/verdaccio/storage"
- "./conf:/verdaccio/conf"
- "./plugins:/verdaccio/plugins"
environment:
# 注意部署的域名
- VERDACCIO_PUBLIC_URL=https://verdaccio.example.com
networks:
node-network:
driver: bridge
volumes:
verdaccio:
driver: local
yaml
# 原文件有许多注释, 我删除掉了, 这里只列出关键配置项
# 源码中的默认配置文件: https://github.com/verdaccio/verdaccio/tree/6.x/conf
#
# Read about the best practices
# https://verdaccio.org/docs/best
storage: /verdaccio/storage/data
plugins: /verdaccio/plugins
# https://verdaccio.org/docs/configuration#authentication
auth:
htpasswd:
file: /verdaccio/storage/htpasswd
max_users: 1000
algorithm: bcrypt
register: false
security:
api:
jwt:
sign:
expiresIn: 30d
notBefore: 1
web:
sign:
expiresIn: 7d
# 注意这里: 上行链路的配置, 如果在当前项目中没有找到就到上游仓库拉取
# 我这里配置了 npmjs, tencent, taobao, huawei 四个上游仓库, 具体配置可以参考官方文档
# https://verdaccio.org/docs/configuration#uplinks
uplinks:
npmjs:
url: https://registry.npmjs.org/
tencent:
url: https://mirrors.tencent.com/npm/
taobao:
url: https://registry.npmmirror.com/
huawei:
url: https://repo.huaweicloud.com/repository/npm/
# https://verdaccio.org/docs/configuration#packages
packages:
"@*/*":
access: $authenticated
publish: $authenticated
unpublish: $authenticated
proxy: tencent
"**":
access: $authenticated
publish: $authenticated
unpublish: $authenticated
proxy: tencent
# https://verdaccio.org/docs/configuration#server
server:
keepAliveTimeout: 60
# https://verdaccio.org/docs/configuration#notifications
middlewares:
audit:
enabled: true
# log settings
log:
- { type: stdout, format: pretty, level: trace }
启动服务
sh
cd verdaccio
docker-compose up -d
sh
docker-compose logs -f
注意常见问题
- 问题 1:
storage 目录有权限问题导致无法发布npm包
由于默认的配置文件是从镜像中复制的, 所以要注意给予足够的权限, 否则可能会导致权限问题
sh
chmod -R 777 storage
- 问题 2:
输入密码/邮箱的时候一直显示转圈
txt
不用管他正常输入即可