docker容器内如何安装使用cnpm ?

问题源自我要把autopiano项目做成镜像,里面用到了cnpm。

cnpm用国内源,比npm快

额,我用node:12.15.0-alpine镜像,npm install cnpm -g后就直接可用了,不用软链接

以下内容为复制,不代表本站观点


隔壁的运维兄弟,要把苏南大叔写的nodejs代码,塞到了docker里面。那么,就面临着一个npm install的问题,不太好的消息是:在调试阶段,要经常性的使用npm install。那么就不可避免地面临一个问题:。建议使用cnpm来代替npm,结果被反馈:cnpm安装后,无法找到cnpm命令。

于是就有了本文的内容,在node容器里面,如何使用cnpm命令呢?本文容器的基础镜像是:基于centos7.5node8镜像。解决方案就是软连接ln,但是由于docker版的centos是阉割版的,所以,cnpm的路径是存在问题的。

容器内安装cnpm

假设容器名叫做:node_container。那么,需要先进入容器内部。

docker exec -it node_container /bin/bash

执行命令:

npm install cnpm -g

安装完毕后,可以看到有如下类似回显内容:

npm WARN deprecated [email protected]: If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious bug with socket data flow and an import issue introduced in 2.1.0
/opt/node/bin/cnpm -> /opt/node/lib/node_modules/cnpm/bin/cnpm

[email protected]
updated 1 package in 34.723s

如果试图执行cnpm命令的话,会显示无法找到命令。真心是不按套路出牌啊。

[root@localhost update]# cnpm
-bash: cnpm: 未找到命令

解决方案也蛮简单,就是做个软连接,至于路径嘛,cnpm安装完毕的时候,不是有显示路径么... 或者,您还可以使用which或者whereis或者find之类的,得到该路径:/opt/node/bin/cnpm

当然这个路径/opt/node/bin/cnpm,也是个软链接,可以通过ls -al查看真实的路径。/opt/node/lib/node_modules/cnpm/bin/cnpm

而后面的路径:/usr/local/bin/cnpm。比较好理解,/usr/local/bin/,这个是系统的用户目录,只要里面的可执行文件,都是默认优先执行的。

重点就是:做好ln软连接即可。命令行如下:

ln /opt/node/lib/node_modules/cnpm/bin/cnpm   	/usr/local/bin/cnpm 

做好cnpm的软连接之后,就可以愉快的使用cnpm install了。安装速度明显快了好多,领导的脸上也露出了笑容......