前言
所有公司的前端开发中都会用到组件,怎么使用npm i的形式使用自己内部封装好的组件呢,我推荐使用verdaccio,下面是操作方法。
使用docker在服务器搭建verdaccio私服
前置操作:服务器去新开一个端口给verdaccio使用,我使用的是4399端口
verdaccio默认端口是4873,如果需要修改记得去conf底下的配置文件里添加listen:ip:端口
1.docker安装
如果你的阿里云服务器使用的是非基于Debian的操作系统,例如CentOS或者其他Linux发行版,那么安装Docker的步骤会有所不同。在这种情况下,你可以按照以下步骤来安装Docker:
-
登录到你的阿里云服务器。
-
卸载旧版本的Docker(如果有):
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
-
安装Docker的依赖包:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
-
添加Docker的YUM源:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
-
安装Docker引擎:
sudo yum install docker-ce docker-ce-cli containerd.io
-
启动Docker服务:
sudo systemctl start docker
-
验证Docker是否成功安装:
sudo docker run hello-world
如果看到一个Hello World,表示Docker已经成功安装。
请注意,上述步骤适用于基于CentOS的阿里云服务器。
2.下载verdaccio
下载前置操作,记得在服务器上登录docker hub的账号、
下载:
docker pull verdaccio/verdaccio
3.运行verdaccio
运行容器:
docker run -it -d --name verdaccio -p 4873:4873 verdaccio/verdaccio
记住打印的id!!!
相关文件夹说明:
conf:配置
plugins:插件
storage: 发布的包
在主机上创建一个verdaccio文件夹进行存储
mkdir verdaccio
把相关文件拷贝到主机上:
docker cp “启动的id”:/verdaccio /root/
停止容器:
docker stop "启动的id"
删除id(可删可不删):
docker rm "启动的id"
运行主机的:记住运行的id
docker run -it -d --name verdaccio -p 4399:4873 -v /root/verdaccio/storage:/verdaccio/storage -v /root/verdaccio/conf:/verdaccio/conf -v /root/verdaccio/plugins:/verdaccio/plugins verdaccio/verdaccio
启动verdaccio:
docker logs "启动的id"
4.配置自动重启
当服务器重启使用docker的自动重启策略来实现
docker run -d --restart=always -p 4399:4873 --name verdaccio -v /root/verdaccio/conf/config.yaml:/verdaccio/conf/config.yaml verdaccio/verdaccio
5.可能出现的报错及其解决方法
启动成功之后如果浏览器打不开,主机拒绝连接
(1)操作防火墙,添加指定端口
firewall-cmd --add-port=4399/tcp --permanent
(2)重新加载防火墙
firewall-cmd --reload
如果在启动之后修改了配置文件,需要保存并且重启docker
docker restart "启动的id"
6.其他相关指令
运行指定容器
docker start "id"
查看未运行的
docker ps -a
7.nrm
使用nrm来管理npm的源
下载nrm
npm i -g nrm
相关指令:
查看源
nrm ls
新增源
nrm add 名字 源地址
切换源
nrm use 名字
删除源
nrm del 名字
以上就是如何使用docker搭建verdaccio私服,如果有小伙伴不知道怎么发布npm包到私服上可以评论区留言,我后续会整理发布的步骤