网易首页 > 网易号 > 正文 申请入驻

如何使用 Docker 高效部署 Node 应用

0
分享至

  一个 hello, world 版的 Node Web App

const http = require('http')
const app = async (req, res) => {
res.end('hello, world')
}
http.createServer(app).listen(3000, () => console.log(3000))

  package.json

  配置 npm start 来启动应用

"scripts": {
"start": "node index.js"
},

  但这仅仅是最简单的 Node 应用,真实环境中还有各种数据存储及定时任务调度等,暂撇开不谈,这已经足够了。

  再稍微复杂一点点的 Node 应用可以查看山月的项目 whoami: 一个最简化的 serverless 与 dockerize 示例。

  NODE_ENV=production

  在生产环境中,无需安装 devDependecies 中依赖,NODE_ENV 环境变量设置为 production 时将会跳过 devDep。

# 通过设置环境变量,只安装生产环境依赖
$ NODE_ENV=production npm ci
# 通过显示指定 flag,只安装生产环境依赖
$ npm ci --production

  另一方面,某些第三方模块会根据 NODE_ENV 环境变量做出一些意料不到的配置。因此在生产环境注意该环境变量的配置。

  一个典型的、面向服务端的 Node 应用是这么跑起来的:

  1. npm install

  2. npm run config,从配置服务(consul/vault)拉取配置 ,如数据库与缓存的账号密码,此时构建服务器需要配置服务权限

  3. npm run migrate,数据库迁移脚本,执行数据库表列行更改操作,此时构建服务器需要数据库访问权限

  4. npm start,启动一个 Node 服务

  把运行步骤翻译为 Dockerfile:

# 选择一个体积小的镜像 (~5MB)
FROM node:12-alpine
# 环境变量设置为生产环境
ENV NODE_ENV production
WORKDIR /code
# 更好的根据 Image Layer 利用缓存
ADD package.json package-lock.json /code
RUN npm ci
ADD . /code
# 配置服务及数据库迁移
RUN npm run config --if-present && npm run migrate --if-present
EXPOSE 3000
CMD npm start

  针对于大部分 Node 应用已经是足够了,如果精益求精,可以再走接下来的多阶段构建

  node-gyp 与 Native Addon

  在 Node 中有可能存在着一些 Native Addon,它们通过 node-gyp 进行编译,而它依赖于 python,make 与 g++。

$ apk --no-cache add python make g++

  在带有编译过程的镜像构建中,源文件与构建工具都会造成空间的浪费。借助镜像的多阶段构建可以高效利用空间。Go App 与 FE App 的构建也遵循此规则。

  在构建 Node 应用镜像时,第一层镜像用以构造 node_modules。

# 选择一个体积小的镜像 (~5MB)
FROM node:12-alpine as builder
# 环境变量设置为生产环境
ENV NODE_ENV production
# 更好的根据 Image Layer 利用缓存
ADD package.json package-lock.json ./
RUN npm ci
# 多阶段构建之第二阶段
# 多阶段构建之第二阶段
# 多阶段构建之第二阶段
FROM node:12-alpine
WORKDIR /code
ENV NODE_ENV production
ADD . .
COPY --from=builder node_modules node_modules
# 配置服务及数据库迁移
RUN npm run config --if-present && npm run migrate --if-present
EXPOSE 3000
CMD npm start

  作者:shanyue

  链接:https://juejin.im/post/6864724659904970760

  来源:掘金

  著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
韩国传来重大涉华消息,该地区失守,尹锡悦后悔已晚,尴尬发生了

韩国传来重大涉华消息,该地区失守,尹锡悦后悔已晚,尴尬发生了

新财迷
2024-04-23 11:02:10
“中美”传来好消息!4月23号,深夜的三大重要消息冲击来袭!

“中美”传来好消息!4月23号,深夜的三大重要消息冲击来袭!

叮当当科技
2024-04-23 06:05:57
郭碧婷罕晒童年旧照,完美诠释从小美到大,俩儿女遗传妈妈高颜值

郭碧婷罕晒童年旧照,完美诠释从小美到大,俩儿女遗传妈妈高颜值

侦探娱乐
2024-04-22 21:36:42
名媛蔡天凤遭遇横死,冤魂无靠托梦给其母,灵媒出手一招摆平

名媛蔡天凤遭遇横死,冤魂无靠托梦给其母,灵媒出手一招摆平

吴学华看天下
2024-04-22 12:15:25
承欢记:麦承欢怀孕不自知,麦妈一句你有了,姚志明当场乐疯

承欢记:麦承欢怀孕不自知,麦妈一句你有了,姚志明当场乐疯

娱乐多谋
2024-04-23 14:09:47
全民所有制不等于人人所有:产权说了算,何院士是对的

全民所有制不等于人人所有:产权说了算,何院士是对的

永不出场的戈多
2024-04-22 18:35:11
到底啥时候才能不被爸妈唠叨?我都四十了,网友分享我狠狠代入

到底啥时候才能不被爸妈唠叨?我都四十了,网友分享我狠狠代入

户外阿崭
2024-04-23 17:27:50
北京小升初:掉进渣校不可怕,可怕的是你竟不知可以这样去好学校

北京小升初:掉进渣校不可怕,可怕的是你竟不知可以这样去好学校

呼呼历史论
2024-04-23 07:45:24
越闹越大!美联储高官密集发声,将加息至8%?谁将成收割对象?

越闹越大!美联储高官密集发声,将加息至8%?谁将成收割对象?

北向财经
2024-04-23 14:21:53
霍里:MVP会是约基奇 因为投票人都是傻子&他们不看球只会从众

霍里:MVP会是约基奇 因为投票人都是傻子&他们不看球只会从众

直播吧
2024-04-22 23:11:33
牵出大瓜!李双江被取消“天价养老金”,背后的原因是什么?

牵出大瓜!李双江被取消“天价养老金”,背后的原因是什么?

聚合大娱
2023-10-13 17:18:31
于无声处听惊雷:约翰逊将援乌法案付诸投票的幕后故事

于无声处听惊雷:约翰逊将援乌法案付诸投票的幕后故事

近距离
2024-04-22 13:34:11
算命的说三大生肖5月运势不得了,大顺特顺,横财滚滚好运气冲天

算命的说三大生肖5月运势不得了,大顺特顺,横财滚滚好运气冲天

人閒情事
2024-04-23 09:52:24
俄罗斯崩溃,中国的选择与挑战

俄罗斯崩溃,中国的选择与挑战

百角城
2024-03-25 08:01:11
惠城区将新增一个占地7.3万平方米的体育公园

惠城区将新增一个占地7.3万平方米的体育公园

南方都市报
2024-04-23 11:44:18
马加爵被执行死刑,临刑前对父亲说了五个字:爸爸,没事的

马加爵被执行死刑,临刑前对父亲说了五个字:爸爸,没事的

青丝人生
2024-04-18 22:10:36
台娱圈内人士:大S目前复出台娱四处碰壁,因为大家都不想带她玩

台娱圈内人士:大S目前复出台娱四处碰壁,因为大家都不想带她玩

西瓜叨娱乐
2024-04-23 00:49:36
63岁中将郑家概去世,官方2字披露死因,一句话对其盖棺定论

63岁中将郑家概去世,官方2字披露死因,一句话对其盖棺定论

求实者
2024-04-22 22:49:02
英伟达股票创下四年最大跌幅

英伟达股票创下四年最大跌幅

未来半导体
2024-04-23 09:12:25
中央定调后,马兴瑞出席重要活动,有两个特殊之处

中央定调后,马兴瑞出席重要活动,有两个特殊之处

政知新媒体
2024-04-22 21:35:23
2024-04-23 18:20:49
Nodejs开发
Nodejs开发
分享只有程序员懂的干货
648文章数 824关注度
往期回顾 全部

科技要闻

参与网暴理想MEGA?小鹏:不信谣、不传谣

头条要闻

护士换针致针头遗留男童体内5年 家长:取出手术风险高

头条要闻

护士换针致针头遗留男童体内5年 家长:取出手术风险高

体育要闻

快船独行侠G1:猛踹瘸子那条好腿

娱乐要闻

赵丽颖晒照似初恋,拍照疑与儿子分享

财经要闻

千元“特供”酒 猫腻有几何

汽车要闻

哪吒首款大五座SUV 哪吒L售价12.99万起

态度原创

艺术
本地
手机
旅游
公开课

艺术要闻

蔚为大观,书香盛宴再启航!第三届嘉德国际艺术图书展正在呈现

本地新闻

我和我的家乡|潍坊人真是什么都敢往天上放啊

手机要闻

vivo X100 Ultra 手机相机曝光:蓝图影像 + 蔡司+ 潜望式摄像头

旅游要闻

重庆荣获2023年全国游客满意度十佳城市

公开课

睡前进食会让你发胖吗?

无障碍浏览 进入关怀版