nodejs docker 开发最好选择yarn 进行包管理而不是npm

Posted rongfengliang-荣锋亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs docker 开发最好选择yarn 进行包管理而不是npm相关的知识,希望对你有一定的参考价值。

npm 与yarn 的区别网上一大堆的文章,我们在构建docker 镜像是应该遵守的有些原则
 
  • 基础镜像尽量小
  • 对于构建进行缓存处理
  • 构建的docker 的文件层数尽量少
  • 能直接运行的,就别进行重复构建了(比如go)
 
yarn 在我们进行本地构建的时候可以帮助我们减少很多资源的在重复下载,以及校验,
加速docker 项目的构建
 
以下为一个简单的例子,具体与npm的比较就不用了,效果太明显了
备注:
     此次docker nodejs 镜像使用的是 kkarczmarczyk/node-yarn (下载次数比较高)
     nodekjs 的框架使用 hapi
 
1. 项目初始化
yarn init 

yarn add hapi

package.json  add

"scripts":{

   "run":"node index.js"
}
2. nodejs 简单代码
  
    index.js
const Hapi = require(\'hapi\');

// Create a server with a host and port
const server = new Hapi.Server();
server.connection({ 
    host: \'0.0.0.0\', 
    port: 8009 
});

// Add the route
server.route({
    method: \'GET\',
    path:\'/hello\', 
    handler: function (request, reply) {

        return reply(\'hello world\');
    }
});

// Start the server
server.start((err) => {

    if (err) {
        throw err;
    }
    console.log(\'Server running at:\', server.info.uri);
});
3. docker 配置
    
   Dockerfile
FROM kkarczmarczyk/node-yarn
RUN mkdir -p /home/nodejs/app
WORKDIR /home/nodejs/app
COPY . /home/nodejs/app
RUN yarn 
CMD ["yarn","run","run"]
4. 项目结构
 
 
5. 构建&&运行
docker build -t demo .
docker run -d -p 8009:8009 demo
6.  构建效果
 
 
从上图明显看到每次构建都是走的cache 对于nodejs 包也是,这样可以很快的进行镜像的
构建,明显如直接 npm 的快很多,建议大家在生产环境多使用,高效快速就是王道。
 
7. 参考资料
https://hub.docker.com/r/kkarczmarczyk/node-yarn/
https://yarnpkg.com/zh-Hans/
https://hapijs.com/

以上是关于nodejs docker 开发最好选择yarn 进行包管理而不是npm的主要内容,如果未能解决你的问题,请参考以下文章

Vue开发中cnpm,yarn,npm,nodejs 区别与关系

在 Docker 容器中调试 Nodejs

Python与NodeJS的比较,2020年开发者该如何选择

Python与NodeJS的比较,2020年开发者该如何选择

如何通过docker编译vue项目

[yarn]yarn和npm的对比