Docker部署verdaccio搭建npm私服的實現(xiàn)
一、鏡像獲取
# 獲取 verdaccio 鏡像 docker pull verdaccio/verdaccio
二、修改配置文件
cd /wwwroot/opt/docker/verdaccio/conf vim config.yaml
config.yaml 配置文件如下,可以根據(jù)自己的需要進行修改
# # 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" }] # 發(fā)送消息的webhook endpoint: xxx content: '{ "msgtype": "text","at": { "isAtAll": true }, "text": {"content":"組件發(fā)版通知: { { 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' # 是監(jiān)聽的ip和端口,4873 就是后面訪問的端口 notify: method: POST headers: [{ "Content-Type": "application/json;charset=utf-8" }] # 推包后發(fā)送消息的 webhook 地址,如沒有則不用配置 endpoint: xxx
三、創(chuàng)建容器并運行
docker run -d --name verdaccio \n -p 4873:4873 \n -v /wwwroot/opt/docker/verdaccio:/verdaccio \n --privileged=true verdaccio/verdaccio
四、測試運行
此時,verdaccio已經(jīng)啟動,http://ip:4873/ 已經(jīng)可以訪問
五、使用內(nèi)網(wǎng)穿透 的 web界面坑
在搭建公司私有庫時,使用的內(nèi)網(wǎng)ip,但是為了在外面方便訪問,運營將內(nèi)網(wǎng)ip穿透得到一個外網(wǎng)可以訪問的ip。但是不能使用內(nèi)網(wǎng)ip和外網(wǎng)ip同時訪問web頁面。查看verdaccio的頁面請求發(fā)現(xiàn)會將當天第一次請求的域名緩存起來。假設當天先訪問內(nèi)網(wǎng)環(huán)境域名,則外網(wǎng)環(huán)境web頁面將無法訪問,因為請求被寫死成內(nèi)網(wǎng)地址,如果先訪問外網(wǎng)地址,則內(nèi)網(wǎng)地址跳轉(zhuǎn)到無包頁面。
到此這篇關(guān)于Docker部署verdaccio搭建npm私服的實現(xiàn)的文章就介紹到這了,更多相關(guān)Docker Verdaccio搭建Npm內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解使用Docker快速部署ELK環(huán)境(最新5.5.1版本)
這篇文章主要介紹了詳解使用Docker快速部署ELK環(huán)境(最新5.5.1版本),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09docker創(chuàng)建鏡像并上傳云端服務器的實現(xiàn)示例
鏡像是一種輕量級、可執(zhí)行的獨立軟件包,用來打包軟件運行環(huán)境和基于運行環(huán)境開發(fā)的軟件,本文介紹了如何使用Docker創(chuàng)建鏡像,并將其上傳到云端,感興趣的可以了解一下2023-08-08解決Docker之mysql容器數(shù)據(jù)庫更改不生效的問題
這篇文章主要介紹了解決Docker之mysql容器數(shù)據(jù)庫更改不生效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11詳解如何獲取docker容器(container)的ip地址
這篇文章主要介紹了詳解如何獲取docker容器(container)的ip地址,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09docker prune命令可定時清理不常用數(shù)據(jù)的實現(xiàn)
磁盤使用過久就會導致磁盤空間越來越小,這時候就需要刪除不相關(guān)的數(shù)據(jù)來釋放磁盤空間,本文主要使用docker prune命令可定時清理不常用數(shù)據(jù)的實現(xiàn),感興趣的可以了解一下2021-10-10