当前位置: 代码网 > 服务器>服务器>云虚拟主机 > Docker部署verdaccio搭建npm私服的实现

Docker部署verdaccio搭建npm私服的实现

2025年02月13日 云虚拟主机 我要评论
一、镜像获取# 获取 verdaccio 镜像docker pull verdaccio/verdaccio二、修改配置文件cd /wwwroot/opt/docker/verdaccio/confv

一、镜像获取

# 获取 verdaccio 镜像
docker pull verdaccio/verdaccio

二、修改配置文件

cd /wwwroot/opt/docker/verdaccio/conf
vim config.yaml

config.yaml 配置文件如下,可以根据自己的需要进行修改

#
# this is the default configuration file. it allows all users to do anything,
# please read carefully the documentation and best practices to
# improve security.
#
# look here for more config file examples:
# https://github.com/verdaccio/verdaccio/tree/5.x/conf
#
# read about the best practices
# https://verdaccio.org/docs/best

# path to a directory with all packages
storage: ./storage
# path to a directory with plugins to include
plugins: ./plugins

# https://verdaccio.org/docs/webui
web:
  title: verdaccio
  # comment out to disable gravatar support
  # gravatar: false
  # by default packages are ordercer ascendant (asc|desc)
  # sort_packages: asc
  # convert your ui to the dark side
  # darkmode: true
  # html_cache: true
  # by default all features are displayed
  # login: true
  # showinfo: true
  # showsettings: true
  # in combination with darkmode you can force specific theme
  # showthemeswitch: true
  # showfooter: true
  # showsearch: true
  # showraw: true
  # showdownloadtarball: true
  #  html tags injected after manifest <scripts/>
  # scriptsbodyafter:
  #    - '<script type="text/javascript" src="https://my.company.com/customjs.min.js"></script>'
  #  html tags injected before ends </head>
  #  metascripts:
  #    - '<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>'
  #    - '<script type="text/javascript" src="https://browser.sentry-cdn.com/5.15.5/bundle.min.js"></script>'
  #    - '<meta name="robots" content="noindex" />'
  #  html tags injected first child at <body/>
  #  bodybefore:
  #    - '<div id="myid">html before webpack scripts</div>'
  #  public path for template manifest scripts (only manifest)
  #  publicpath: http://somedomain.org/

# https://verdaccio.org/docs/configuration#authentication
auth:
  htpasswd:
    file: ./htpasswd
    # maximum amount of users allowed to register, defaults to "+inf".
    # you can set this to -1 to disable registration.
    # max_users: 1000

# https://verdaccio.org/docs/configuration#uplinks
# a list of other known repositories we can talk to
uplinks:
  taobao:                                                                                                    
    url: https://registry.npm.taobao.org/
  npmjs:
    url: https://registry.npmjs.org/
  yarnkg: 
    url: https://registry.yarnpkg.com/
  tencent:
    url: https://mirrors.cloud.tencent.com/npm/
  cnpm:
    url: https://r.cnpmjs.org/
  npmmirror:
    url: https://skimdb.npmjs.com/registry/
# learn how to protect your packages
# https://verdaccio.org/docs/protect-your-dependencies/
# https://verdaccio.org/docs/configuration#packages
packages:
  '@*/*':
    # scoped packages
    access: $all
    publish: $authenticated
    unpublish: $authenticated
    proxy: taobao

  '**':
    # 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: taobao

# to improve your security configuration and  avoid dependency confusion
# consider removing the proxy property for private packages
# https://verdaccio.org/docs/best#remove-proxy-to-increase-security-at-private-packages

# https://verdaccio.org/docs/configuration#server
# 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

# https://verdaccio.org/docs/configuration#offline-publish
# publish:
#   allow_offline: false

# https://verdaccio.org/docs/configuration#url-prefix
# url_prefix: /verdaccio/
# verdaccio_public_url='https://somedomain.org';
# url_prefix: '/my_prefix'
# // url -> https://somedomain.org/my_prefix/
# verdaccio_public_url='https://somedomain.org';
# url_prefix: '/'
# // url -> https://somedomain.org/
# verdaccio_public_url='https://somedomain.org/first_prefix';
# url_prefix: '/second_prefix'
# // url -> https://somedomain.org/second_prefix/'

# https://verdaccio.org/docs/configuration#security
# security:
#   api:
#     legacy: true
#     jwt:
#       sign:
#         expiresin: 29d
#       verify:
#         someprop: [value]
#    web:
#      sign:
#        expiresin: 1h # 1 hour by default
#      verify:
#         someprop: [value]

# https://verdaccio.org/docs/configuration#user-rate-limit
# userratelimit:
#   windowms: 50000
#   max: 1000

# https://verdaccio.org/docs/configuration#max-body-size
max_body_size: 50mb

# https://verdaccio.org/docs/configuration#listen-port
listen:
 - '0.0.0.0:4873'              # listen on all addresses (inaddr_any)
# - https://example.org:4873  # if you want to use https
# - "[::1]:4873"                # ipv6
# - unix:/tmp/verdaccio.sock    # unix socket

# the https configuration is useful if you do not consider use a http proxy
# https://verdaccio.org/docs/configuration#https
# https:
#   key: ./path/verdaccio-key.pem
#   cert: ./path/verdaccio-cert.pem
#   ca: ./path/verdaccio-csr.pem

# https://verdaccio.org/docs/configuration#proxy
# http_proxy: http://something.local/
# https_proxy: https://something.local/

# https://verdaccio.org/docs/configuration#notifications
notify:
   method: post
   headers: [{ "content-type": "application/json;charset=utf-8" }]
   # 发送消息的webhook
   endpoint: xxx
   content: '{ "msgtype": "text","at": { "isatall": true }, "text": {"content":"组件发版通知: {
  
  { name }}{
  
  {#each versions}} v{
  
  {version}}{
  
  {/each}}"}}'

middlewares:
  audit:
    enabled: true

# https://verdaccio.org/docs/logger
# log settings
logs: { type: stdout, format: pretty, level: http }
#experiments:
#  # support for npm token command
#  token: false
#  # disable writing body size to logs, read more on ticket 1912
#  bytesin_off: false
#  # enable tarball url redirect for hosting tarball with a different server, the tarball_url_redirect can be a template string
#  tarball_url_redirect: 'http://175.42.30.161:46803/verdaccio/${packagename}/${filename}'
#  tarball_url_redirect: 'http://175.42.30.161:46803/${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;
#  }

# translate your registry, api i18n not available yet
i18n:
# list of the available translations https://github.com/verdaccio/verdaccio/blob/master/packages/plugins/ui-theme/src/i18n/about_translations.md
   web: zh-cn
auth:
  htpasswd:
    file: ./htpasswd  # 是 npm 私服的用户密码文件

max_body_size: 50mb # 是推上私服的包的最大大小



listen:
 - '0.0.0.0:4873'   # 是监听的ip和端口,4873 就是后面访问的端口



notify:
   method: post
   headers: [{ "content-type": "application/json;charset=utf-8" }]
   # 推包后发送消息的 webhook 地址,如没有则不用配置
   endpoint: xxx

三、创建容器并运行

docker run -d --name verdaccio \n
-p 4873:4873 \n
-v /wwwroot/opt/docker/verdaccio:/verdaccio \n
--privileged=true verdaccio/verdaccio 

四、测试运行

此时,verdaccio已经启动,http://ip:4873/ 已经可以访问

五、使用内网穿透 的 web界面坑

在搭建公司私有库时,使用的内网ip,但是为了在外面方便访问,运营将内网ip穿透得到一个外网可以访问的ip。但是不能使用内网ip和外网ip同时访问web页面。查看verdaccio的页面请求发现会将当天第一次请求的域名缓存起来。假设当天先访问内网环境域名,则外网环境web页面将无法访问,因为请求被写死成内网地址,如果先访问外网地址,则内网地址跳转到无包页面。

到此这篇关于docker部署verdaccio搭建npm私服的实现的文章就介绍到这了,更多相关docker verdaccio搭建npm内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com