參考地址:
1、https://www.cnblogs.com/fuhai0815/p/9591979.html
2、http://m.itdecent.cn/p/77af52a75ad8
3、https://blog.csdn.net/lusyoe/article/details/54926937
4、https://blog.51cto.com/z190100425/2091696
5、https://blog.csdn.net/running_shuai/article/details/80482800
6、npm的package.json中文文檔(對(duì)基礎(chǔ)信息的配置非常有用):https://github.com/ericdum/mujiang.info/issues/6/
一、安裝Nexus
1、拉取鏡像docker pull sonatype/nexus3
2、運(yùn)行容器docker run -d -p 8081:8081 -p 8082:8082 -p 8083:8083 -p 8084:8084 --name nexus3 sonatype/nexus3 -v /opt/nexus-data:/nexus-data
tips1:/nexus-data:docker里存nexus數(shù)據(jù)目錄,所以將數(shù)據(jù)目錄存放到宿主機(jī)/opt/nexus-data
tips2: 不帶持久化的命令docker run -d -p 8081:8081 -p 8082:8082 -p 8083:8083 --name nexus3
3、單獨(dú)持久化(TODO:volume)
- 說明
| 項(xiàng)目 | 端口 | 備注 | URL |
|---|---|---|---|
| Nexus UI | 8081 | nexus3網(wǎng)頁(yè)端 | http://localhost:8081 |
| Private repo | 8082 | docker(hosted)私有倉(cāng)庫(kù),可以pull和push | http://localhost:8082 |
| Proxy repo | 8083 | docker(proxy)代理遠(yuǎn)程倉(cāng)庫(kù),只能pull | http://localhost:8083 |
| Proxy group | 8084 | docker(group)私有倉(cāng)庫(kù)和代理的組,只能pull | http://localhost:8084 |
4、編輯配置文件
- 進(jìn)入容器
vi /etc/systemd/system/multi-user.target.wants/docker.service
找到ExecStart屬性,在dockerd后面添加--insecure-registry 服務(wù)器IP:Docker倉(cāng)庫(kù)端口 ,最終如下:
ExecStart=/usr/bin/dockerd --insecure-registry 172.3.1.2:8082
- 重啟Docker服務(wù)(Windows版本,直接通過UI的方式重啟)
systemctl daemon-reload
systemctl restart docker
二、訪問網(wǎng)頁(yè)端http://localhost:8081
默認(rèn)賬號(hào)密碼:admin/admin123

三、創(chuàng)建Npm的Blob和倉(cāng)庫(kù),并且推送代碼到Nexus私服中
1、創(chuàng)建Npm專屬的Blob(類似于數(shù)據(jù)庫(kù)實(shí)例的功能)->Name= npm-repo-blob其余默認(rèn)就行

2、創(chuàng)建三個(gè)Npm的Repositories(npm-repo-hosted、npm-repo-proxy、npm-repo-group )
倉(cāng)庫(kù)類型
| 項(xiàng)目 | 端口 |
|---|---|
| hosted | 本地存儲(chǔ),提供本地私庫(kù)功能 |
| proxy | 提供代理其他倉(cāng)庫(kù)的類型 ->官方:https://registry.npmjs.org,國(guó)內(nèi)淘寶:https://registry.npm.taobao.org |
| group | 組類型,可以組合多個(gè)倉(cāng)庫(kù)為一個(gè)地址提供服務(wù) |



四、在Realms設(shè)置權(quán)限

五、新建普通用戶,并且賦予權(quán)限

五、推送npm到服務(wù)器
1、使用npm init -y ,在任意目錄創(chuàng)建npm項(xiàng)目
index.js代碼如下
exports.showMsg = function () {
console.log("This is my first module");
};
package.json代碼如下
{
"name": "npm",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}

登錄npm login --registry=http://localhost:8061/repository/npm-repo-hosted/
推送npm publish --registry=http://localhost:8061/repository/npm-repo-hosted/


六、簡(jiǎn)化發(fā)布npm的命令
在package.json文件中添加如下代碼,則可以直接使用npm publish發(fā)布npm包到私有服務(wù)器:
"publishConfig": {
"registry": "http://localhost:8061/repository/npm-repo-hosted/"
},

七、本地更新版本號(hào)(參考:http://m.itdecent.cn/p/a4d5206a581e)
本地更新版本號(hào)
比如我想來個(gè)1.0.1版本,注意,是最后一位修改了增1,命令:npm version patch
比如我想來個(gè)1.1.0版本,注意,是第二位修改了增1,命令:npm version minor
比如我想來個(gè)2.0.0版本,注意,是第一位修改了增1,命令: npm version major