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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM