Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

Multi-stage builds met container

Systemen worden snel erg groot als je het compleet verstuurt. Dit omvat de build en vaak ook de build- en testomgeving. Zelfs als het uitpakken van de te verzenden bestanden geen probleem is, is het tijdrovend.

Containers bieden de mogelijkheid om dit automatisch te doen.

Hier heeft u de mogelijkheid om meerdere containers in één bestand te definiëren. Een website gemaakt in JavaScript en gebouwd met Node.js is een goed voorbeeld.

Voorbeeld:

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

Het hele systeem als container levert in totaal ruim 600 Mbyte op, al is er maar 22 Mbyte (webserver + website) nodig. Daarnaast is er een veiligheidsrisico voor het systeem omdat er software aanwezig is die niet nodig is voor een productieve operatie. Een oplossing hier is een build in meerdere fasen.

In een multi-stage build worden meerdere containers gedefinieerd in één bestand en dan worden alleen de noodzakelijke gegevens van de ene container naar de andere verzonden.

Voorbeeld meertraps dockerbestand

Om bij de Node.js te blijven, is hier een voorbeeld van een build in meerdere fasen. De eerste container bevat Node.js als bouwsysteem, hierin wordt de website gemaakt. De tweede container bevat de webserver, die na de build de benodigde gegevens uit de eerste container kopieert.

## 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;"]

Het resultaat is een kleine container die alleen het meest noodzakelijke bevat. We gebruiken een zeer kleine Linux-distributie voor nginx met alpine.

Een ander voordeel is dat je toegang hebt tot twee kant-en-klare communitycontainers en dus geen werk hebt om ze te maken en te onderhouden. Voor systeemupdates worden de communitycontainers gewoon regelmatig vervangen. Het geheel kan prachtig worden geautomatiseerd in een pijplijn met GitLab (of andere tools).


Industriële technologie

  1. Kies uw cloudservices verstandig om vertrouwen op te bouwen bij zakelijke leiders
  2. Rekenen met wetenschappelijke notatie
  3. Vraag en antwoord met een Industry 4.0 Solution Architect
  4. Bouw je eerste IOT met een Raspberry Pi, DHT11-sensor en Thingspeak.
  5. Microsoft bouwt het grootste taalgeneratiemodel met 17 miljard parameters
  6. Hoe toeleveringsketenbedrijven roadmaps kunnen maken met AI
  7. Smart Procurement balanceert AI met HI
  8. Containerkranen
  9. Container bouwt voor arm op x86
  10. Multi-stage builds met container
  11. Node-Red met docker-tips en best practices