Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Industrietechnik

Mehrstufige Builds mit Container

Systeme werden schnell sehr groß, wenn Sie sie komplett versenden. Dazu gehören der Build und oft auch die Build- und Testumgebung. Auch wenn das Extrahieren der zu versendenden Dateien kein Problem darstellt, ist es zeitaufwändig.

Container bieten die Möglichkeit, dies automatisch zu tun.

Hier haben Sie die Möglichkeit, mehrere Container in einer Datei zu definieren. Eine in JavaScript erstellte und mit Node.js erstellte Website ist ein gutes Beispiel.

Beispiel:

Node.js:~ 400 MB – 600 MB
Webserver nginx:~ 20 Mbyte
Webseite:~ 2 MB

Das ganze System als Container ergibt insgesamt über 600 Mbyte, obwohl nur 22 Mbyte (Webserver + Website) benötigt werden. Zudem besteht ein Sicherheitsrisiko für das System, da Software vorhanden ist, die für einen produktiven Betrieb nicht benötigt wird. Eine Lösung hier ist ein mehrstufiger Build.

Bei einem mehrstufigen Build werden mehrere Container in einer Datei definiert und dann nur die notwendigen Daten von einem Container zum anderen übertragen.

Beispiel einer mehrstufigen Dockerdatei

Um bei Node.js zu bleiben, hier ein mehrstufiges Build-Beispiel. Der erste Container enthält Node.js als Buildsystem, darin wird die Website erstellt. Der zweite Container enthält den Webserver, der nach dem Build die notwendigen Daten aus dem ersten Container kopiert.

## Base System Stage 1
## Use community Node.js container
FROM node:8.11.3 as buildsystem

## Add source from our Git project
COPY ./source /root/frontend

## Build frontend with Nodejs
WORKDIR /root/frontend/
RUN npm install \
&& npm run build

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

## Base System Stage 2
## Use community nginx container
FROM nginx:alpine 

## Copy build from stage 1
RUN mkdir -p /var/www/html/<MyApp>
COPY --from=buildsystem /root/frontend/dist/ /var/www/html/<MyApp>/

## Add default config for nginx
ADD default.conf /etc/nginx/conf.d/

## Publish Port
EXPOSE 80

## Start nginx
CMD ["nginx", "-g", "daemon off;"]

Das Ergebnis ist ein kleiner Behälter, der nur das Nötigste enthält. Wir verwenden eine sehr kleine Linux-Distribution für nginx mit Alpine.

Ein weiterer Vorteil ist, dass Sie auf zwei fertige Community-Container zugreifen können und somit keinen Aufwand für deren Erstellung und Pflege haben. Bei Systemupdates werden die Community-Container einfach regelmäßig ausgetauscht. Das Ganze lässt sich wunderbar in einer Pipeline mit GitLab (oder anderen Tools) automatisieren.


Industrietechnik

  1. Wählen Sie Ihre Cloud-Dienste mit Bedacht aus, um Vertrauen bei Führungskräften aufzubauen
  2. Arithmetik mit wissenschaftlicher Notation
  3. Fragen und Antworten mit einem Industrie-4.0-Lösungsarchitekten
  4. Erstellen Sie Ihr erstes IOT mit einem Raspberry Pi, einem DHT11-Sensor und Thingspeak.
  5. Microsoft erstellt das größte Sprachgenerierungsmodell mit 17 Milliarden Parametern
  6. Wie Lieferkettenunternehmen mit KI Roadmaps erstellen können
  7. Smart Procurement gleicht KI mit HI aus
  8. Containerkräne
  9. Container-Builds für Arm auf x86
  10. Mehrstufige Builds mit Container