Maison > interface Web > js tutoriel > Une introduction à la façon de déployer efficacement des applications Node.js à l'aide de Docker

Une introduction à la façon de déployer efficacement des applications Node.js à l'aide de Docker

青灯夜游
Libérer: 2020-08-31 10:00:25
avant
2000 Les gens l'ont consulté

Une introduction à la façon de déployer efficacement des applications Node.js à l'aide de Docker

Une solution de déploiement raisonnable et efficace qui permet non seulement des mises à niveau rapides, une commutation fluide, un équilibrage de charge, une isolation des applications et d'autres fonctionnalités de déploiement, mais est également livrée avec un ensemble de surveillance mature et stable.

kubernetes Traitez l'application Node comme une boîte noire d'application côté serveur, qui correspond parfaitement aux conditions ci-dessus. De plus en plus d'équipes déploient Node sur k8. [Tutoriels vidéo recommandés : Tutoriel Node js, Tutoriel vidéo Docker ]

Mais avant cela, vous devez exécuter l'application Node sur un conteneur Docker. Le sujet de ce chapitre.

À propos du déploiement du front-end sur docker, l'auteur a écrit plusieurs articles :

  1. Comment déployer le front-end dans docker
  2. Prévision et production du déploiement front-end
  3. Le processus de développement du déploiement front-end

A Application Node simple

index.js

Une hello, world version de Node Web App

const http = require('http')

const app = async (req, res) => {
  res.end('hello, world')
}

http.createServer(app).listen(3000, () => console.log(3000))
Copier après la connexion

package.json

Configurationnpm start Démarrons l'application

"scripts": {
  "start": "node index.js"
},
Copier après la connexion

Mais ce n'est que l'application Node la plus simple. Dans l'environnement réel, il existe divers stockages de données et planification de tâches planifiées. le moment est venu. Cela suffit.

Pour une application Node légèrement plus complexe, vous pouvez consulter le projet de Shanyue whoami : un exemple le plus simple de serverless et dockerize.

NODE_ENV=production

Dans un environnement de production, il n'est pas nécessaire d'installer des dépendances dans devDependecies Lorsque la variable d'environnement NODE_ENV est définie sur production, devDep sera ignorée.

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

# 通过显式指定 flag,只安装生产环境依赖
$ npm ci --production
Copier après la connexion

D'un autre côté, certains modules tiers feront des configurations inattendues basées sur la variable d'environnement NODE_ENV. Faites donc attention à la configuration de cette variable d’environnement dans l’environnement de production.

Déploiement simple d'une application Node

Une application Node typique orientée serveur s'exécute comme ceci :

  1. npm install
  2. npm run config , extrayez la configuration du service de configuration (consul/vault), telle que la base de données, le compte et le mot de passe mis en cache. À l'heure actuelle, la construction du serveur nécessite les autorisations du service de configuration
  3. npm run migrate, le script de migration de la base de données, l'exécution de la base de données. Opération de changement de ligne de colonne de table À ce stade, le serveur de build nécessite une autorisation d'accès à la base de données
  4. npm start, démarre un service Node

et traduit les étapes en cours dans 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
Copier après la connexion

C'est suffisant pour la plupart des applications Node Si vous continuez à vous améliorer, vous pouvez passer par la prochaine construction en plusieurs étapes

node-gyp et Native Addon

Il peut y en avoir. Natifs de Node. Addon, ils sont compilés via node-gyp, qui dépend de python, make et g++.

$ apk --no-cache add python make g++
Copier après la connexion

Dans la création d'images avec le processus de compilation, les fichiers sources et les outils de construction entraîneront une perte d'espace. Une utilisation efficace de l'espace peut être obtenue grâce à des constructions en plusieurs étapes en miroir. La construction de Go App et FE App suit également cette règle.

Création d'applications de nœuds Lors de la mise en miroir, la première couche de mise en miroir est utilisée pour construire 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
Copier après la connexion

Articles connexes

  1. N-API et premiers pas dans l'écriture de modules complémentaires C pour Node.js
  2. Utilisation de Docker pour Node.js en développement et production

Pour plus de connaissances liées à la programmation, veuillez visiter : Introduction à la programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal