【docker npm】npm 私库
1.部署环境
- window 11 x64
- Docker Desktop 4.34.1 (166053)
- Docker Engine v27.2.0
1.1.Docker 镜像源
1.1.1.Docker Engine 配置
{
"builder": {
"features": {
"buildkit": true
},
"gc": {
"defaultKeepStorage": "32GB",
"enabled": true
}
},
"experimental": true,
"hosts": [
"tcp://0.0.0.0:2375"
],
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://mirror.ccs.tencentyun.com"
]
}
2.拉取Nexus3镜像
# 拉取镜像
docker pull verdaccio/verdaccio:latest
# 保存镜像源(选)
docker save -o verdaccio_verdaccio_latest verdaccio/verdaccio:latest
3.创建并运行Nexus3
docker run -it -d --name npmmirror -p 4873:4873 -v D:\docker\npm\verdaccio\storage:/verdaccio/storage -v D:\docker\npm\verdaccio\conf:/verdaccio/conf -v D:\docker\npm\verdaccio\plugins:/verdaccio/plugins --privileged=true --restart=always verdaccio/verdaccio
说明
--privileged=true
允许容器使用管理员权限--restart=always
自动重启
config.yaml
#
# This is the config file used for the docker images.
# It allows all users to do anything, so don't use it on production systems.
#
# Do not configure host and port under `listen` in this file
# as it will be ignored when using docker.
# see https://verdaccio.org/docs/en/docker#docker-and-custom-port-configuration
#
# Look here for more config file examples:
# https://github.com/verdaccio/verdaccio/tree/master/conf
#
# path to a directory with all packages
storage: /verdaccio/storage/data
# path to a directory with plugins to include
plugins: /verdaccio/plugins
web:
# WebUI is enabled as default, if you want disable it, just uncomment this line
#enable: false
title: NPM 私库
# comment out to disable gravatar support
# gravatar: false
# by default packages are ordercer ascendant (asc|desc)
# sort_packages: asc
# darkMode: true
# logo: http://somedomain/somelogo.png
# favicon: http://somedomain/favicon.ico | /path/favicon.ico
# rateLimit:
# windowMs: 1000
# max: 10000
# translate your registry, api i18n not available yet
# i18n:
# list of the available translations https://github.com/verdaccio/ui/tree/master/i18n/translations
# web: zh-CN
auth:
htpasswd:
file: /verdaccio/storage/htpasswd
# Maximum amount of users allowed to register, defaults to "+infinity".
# You can set this to -1 to disable registration.
max_users: 100
# a list of other known repositories we can talk to
uplinks:
cnpmjs:
url: http://registry.npm.taobao.org/
npmjs:
url: https://registry.npmmirror.com/
packages:
'@*/*':
# scoped packages
access: $all
publish: $authenticated
unpublish: $authenticated
proxy: cnpmjs
'**':
# allow all users (including non-authenticated users) to read and
# publish all packages
#
# you can specify usernames/groupnames (depending on your auth plugin)
# and 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: cnpmjs
# You can specify HTTP/1.1 server keep alive timeout in seconds for incoming connections.
# A value of 0 makes the http server behave similarly to Node.js versions prior to 8.0.0, which did not have a keep-alive timeout.
# WORKAROUND: Through given configuration you can workaround following issue https://github.com/verdaccio/verdaccio/issues/301. Set to 0 in case 60 is not enough.
server:
keepAliveTimeout: 60
middlewares:
audit:
enabled: true
# log settings
logs: { type: stdout, format: pretty, level: http }
#experiments:
# # support for npm token command
# token: false
# # enable tarball URL redirect for hosting tarball with a different server, the tarball_url_redirect can be a template string
# tarball_url_redirect: 'https://mycdn.com/verdaccio/${packageName}/${filename}'
# # the tarball_url_redirect can be a function, takes packageName and filename and returns the url, when working with a js configuration file
# tarball_url_redirect(packageName, filename) {
# const signedUrl = // generate a signed url
# return signedUrl;
# }
# This affect the web and api (not developed yet)
i18n:
web: zh-CN
htpasswd
登录的用户名和密码: admin/123456
admin:POhfqY8PVG4gA:autocreated 2023-09-06T11:01:37.149Z
初次运行容器后,将上面两个文件覆盖到挂载的本地文件,然后重新启动
4.使用npm私库
# 登录
npm login --registry http://xxx.xxx.xxx.xxx:4873/
# 发布
npm publish --registry http://xxx.xxx.xxx.xxx:4873/
# 删包
npm unpublish xxx --registry http://xxx.xxx.xxx.xxx:4873/
npm unpublish xxx@1.0.0 --registry http://xxx.xxx.xxx.xxx:4873/
# 查看本地仓库
npm config get registry
# 设置本地仓库(选)
npm config set registry "http://xxx.xxx.xxx.xxx:4873/"
pnpm set registry http://xxx.xxx.xxx.xxx:4873/
yarn config set registry http://xxx.xxx.xxx.xxx:4873/