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 :
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))
package.json
Configurationnpm start
Démarrons l'application
"scripts": { "start": "node index.js" },
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
.
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
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.
Une application Node typique orientée serveur s'exécute comme ceci :
npm install
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 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 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
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
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++
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
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!