Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Technologie industrielle

Optimiser les déploiements avec les builds multi-étapes Docker

Les systèmes deviennent rapidement très volumineux lorsqu'on les livre dans leur intégralité. Cela inclut l'environnement de build et souvent l'environnement de build et de test. Même si l'extraction des fichiers à livrer ne pose pas de problème, elle reste chronophage.

Les conteneurs offrent la possibilité d'automatiser ce processus.

Vous avez la possibilité de définir plusieurs conteneurs dans un seul fichier. Un site web créé en JavaScript et buildé avec Node.js en est un bon exemple.

Exemple de tailles :

L'ensemble du système dans un conteneur unique dépasse 600 Mo, alors que seuls 22 Mo (nginx + site web) sont nécessaires en production. De plus, cela représente un risque de sécurité car des logiciels inutiles au fonctionnement productif sont présents. La solution : le build multi-étapes (multi-stage build).

Principe du build multi-étapes

Dans un build multi-étapes, plusieurs conteneurs sont définis dans un seul Dockerfile et seules les données nécessaires sont transmises d'un conteneur à l'autre.

Exemple de Dockerfile multi-étapes

Reprenons l'exemple Node.js. Le premier conteneur contient Node.js comme système de build, où le site web est généré. Le second conteneur contient le serveur web, qui copie les données nécessaires du premier conteneur après le build.

## Étape 1 : Système de build
## Utilisation du conteneur Node.js communautaire
FROM node:8.11.3 as buildsystem

## Ajout des sources depuis notre projet Git
COPY ./source /root/frontend

## Build du frontend avec Node.js
WORKDIR /root/frontend/
RUN npm install \
    && npm run build

#####################################################################
#####################################################################

## Étape 2 : Système de production
## Utilisation du conteneur nginx Alpine
FROM nginx:alpine

## Copie du build depuis l'étape 1
RUN mkdir -p /var/www/html/<MonApp>
COPY --from=buildsystem /root/frontend/dist/ /var/www/html/<MonApp>/

## Ajout de la configuration par défaut pour nginx
ADD default.conf /etc/nginx/conf.d/

## Publication du port
EXPOSE 80

## Démarrage de nginx
CMD ["nginx", "-g", "daemon off;"]

Le résultat est un conteneur minimal contenant uniquement le nécessaire. Nous utilisons une distribution Linux très légère pour nginx avec Alpine.

Autre avantage : vous accédez à deux conteneurs communautaires prêts à l'emploi, sans avoir à les créer ni les maintenir. Pour les mises à jour système, les conteneurs communautaires sont simplement remplacés régulièrement. Le tout s'automatise parfaitement dans un pipeline avec GitLab (ou d'autres outils).

Technologie industrielle

  1. Construire la confiance avec les leaders business : choisir les bons services cloud
  2. Maîtriser multiplication et division en notation scientifique
  3. Industrie 4.0 : Questions-réponses avec Verena Majuntke de Bosch.IO sur l'IoT, l'automatisation et l'usine du futur
  4. Réaliser votre premier projet IoT avec Raspberry Pi, DHT11 et ThingSpeak
  5. Microsoft dévoile un modèle de langage record de 17 milliards de paramètres
  6. Feuilles de route pilotées par l'IA : guide stratégique pour les entreprises de la chaîne d'approvisionnement
  7. Achats intelligents : fusionner l'IA et l'expertise humaine
  8. Grues à conteneurs efficaces : chargement et déchargement de précision pour ports et gares ferroviaires
  9. Construction efficace de conteneurs ARM sur systèmes x86