资讯专栏INFORMATION COLUMN

Nodejs Express dockerfile最佳实践

xi4oh4o / 3280人阅读

摘要:少啰嗦,先看代码分析原理使用的镜像,显著缩小镜像大小使用命令,清空缓存,再次减少包占用的时间和放在一起写,减少的层数使用淘宝源,显著提高包下载的速度守护进程通过运行中的包,避免多带带全局安装的占用时间到到这样的顺序可以充分使

少啰嗦,先看代码 package.json
{
  "name": "xxx",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www",
    "forever": "node_modules/forever/bin/forever bin/www"
  },
  "dependencies": {
    "async": "0.9.0",
    "body-parser": "1.13.2",
    "compression": "1.6.2",
    "config": "1.12.0",
    "connect-multiparty": "2.0.0",
    "cookie-parser": "1.3.5",
    "debug": "2.2.0",
    "ejs": "2.3.3",
    "express": "4.13.1",
    "forever": "0.15.3",
    "http-proxy-middleware": "0.17.3",
    "log4js": "0.6.24",
    "serve-favicon": "2.3.0"
  }
}
dockerfile
FROM hub.c.163.com/lightingfire/nodejs:6.9.1-alpine
WORKDIR /app
COPY package.json /app
RUN npm i --registry https://registry.npm.taobao.org && npm cache clean
COPY . /app
EXPOSE 8086
CMD npm run forever
分析原理

使用alpine的nodejs镜像,显著缩小nodejs镜像大小

使用npm cache clean命令,清空npm缓存,再次减少npm包占用的时间

npm i 和 npm chache clean放在一起写,减少build的层数

使用淘宝npm源,显著提高npm包下载的速度

守护进程forever通过npm运行node_module中的包,避免多带带全局安装forever的占用时间

copy package到run npm i到copy . /app, 这样的顺序可以充分使用镜像缓存

修改过后,对比之前通过jenkins打包时间从10分钟缩短到7.4秒

参考资料

How to write excellent Dockerfiles

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26960.html

相关文章

  • Node.js docker 镜像体积优化实践

    摘要:接下来我们将逐步的减少这个镜像的体积。优化生产环境镜像使用镜像大幅减小镜像体积的最简单和最快的方法是选择一个小得多的基本镜像。使用多阶段构建可以充分利用镜像的缓存,大大减少最终部署到生产环境的时间。 关注作者github每日一道面试题详解 你讨厌部署你的应用程序花费很长时间吗? 对于单个容器来说,超过gb并不是最佳实践。每次部署新版本时都要处理数十亿字节,这对我们来说并不太合适。 本文...

    wenhai.he 评论0 收藏0
  • 使用Dockerfile部署nodejs服务

    摘要:构建过程类似如下运行容器镜像构建完成后,可以通过所构建的镜像创建运行容器,从而实现应用的化部暑。使用镜像运行一个容器在以上操作中,我们通过镜像运行了容器,并将容器命名为。此时可通过访问服务。 初始化Dockerfile 假设我们的项目名为express,在express项目中创建编辑Dockerfile文件: $ vim Dockerfile FROM node:latest RU...

    nihao 评论0 收藏0
  • 如何编写最佳Dockerfile

    摘要:将安装与模块安装放在一起的话,则每次修改源代码,都需要重新安装,这显然不合适。使用设置镜像元数据使用指令,可以为镜像设置元数据,例如镜像创建者或者镜像说明。自从年双十一正式上线,累计处理了亿错误事件,付费客户有金山软件百姓网等众多品牌企业。 译者按: Dockerfile 的语法非常简单,然而如何加快镜像构建速度,如何减少 Docker 镜像的大小却不是那么直观,需要积累实践经验。这篇...

    Sike 评论0 收藏0
  • docker安装nodejs

    摘要:创建文件夹创建创建创建配置文件设置基础镜像如果上个步骤已经更新软件源,这步可以忽略安装和将目录中的文件添加至镜像的目录中设置工作目录安装依赖库暴露端口,便于访问设置启动时默认运行命令构建镜像通过该命令,按照所配置的信息构建出镜 创建文件夹: mkdir ~/docker-node-hello && cd $_ 创建 index.js var express = require(expr...

    Jaden 评论0 收藏0
  • docker安装nodejs

    摘要:创建文件夹创建创建创建配置文件设置基础镜像如果上个步骤已经更新软件源,这步可以忽略安装和将目录中的文件添加至镜像的目录中设置工作目录安装依赖库暴露端口,便于访问设置启动时默认运行命令构建镜像通过该命令,按照所配置的信息构建出镜 创建文件夹: mkdir ~/docker-node-hello && cd $_ 创建 index.js var express = require(expr...

    xiaodao 评论0 收藏0

发表评论

0条评论

xi4oh4o

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<