一、镜像获取
# 获取 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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论