百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>JS教程> 使用Docker高效摆设Node.js利用的办法介绍
分享文章到:

使用Docker高效摆设Node.js利用的办法介绍

发布时间:09/01 来源:未知 浏览: 关键词:

一个简便的 Node 利用

index.js

一个 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: 一个最简化的 serverlessdockerize 示例。

NODE_ENV=production

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

# 通过设定环境变量,只安置生产环境依靠
$ NODE_ENV=production npm ci

# 通过显式指定 flag,只安置生产环境依靠
$ npm ci --production

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

一个 Node 利用的简便摆设

一个典型的、面向效劳端的 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 停止编译,而它依靠于 pythonmakeg++

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

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

  • 多阶段构建 Go 利用
  • 多阶段构建前端利用

在构建 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

相关文章

  1. N-API and getting started with writing C addons for Node.js
  2. Using Docker for Node.js in Development and Production
打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有150人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板