Basis van cloud en containers

FROM node:lts
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
RUN npm run build
CMD ["node", "dist/server.js"]

Het bovenstaande Dockerfile (B) is gemaakt uit Dockerfile (A), waarin RUN npm ci na COPY . . stond, door de volgorde zo te veranderen dat eerst alleen de bestanden met de afhankelijkheden worden gekopieerd. npm ci duurt 120 seconden, npm run build 30 seconden en COPY . . 2 seconden; de tijd van de andere instructies is verwaarloosbaar. Het image wordt 20 keer per dag opnieuw gebouwd nadat alleen de broncode onder src is gewijzigd (package.json en package-lock.json blijven ongewijzigd). Hoeveel korter is de totale buildtijd per dag met B dan met A, als de cache van de vorige build kan worden gebruikt?

  1. A2 minuten
  2. BOngeveer 11 minuten
  3. C40 minuten
Antwoord en toelichting tonen

Antwoord: C. 40 minuten

De buildcache wordt per instructie gebruikt, en bij COPY hangt het ervan af of de inhoud van de gekopieerde bestanden dezelfde is als de vorige keer. Zodra de cache voor een instructie niet kan worden gebruikt, worden alle volgende instructies opnieuw uitgevoerd. In A wordt de wijziging bij de eerste COPY . . gevonden, dus elke build duurt 2 + 120 + 30 = 152 seconden. In B zijn package.json en package-lock.json ongewijzigd, dus wordt de cache tot en met npm ci gebruikt en draaien alleen COPY . . en npm run build, wat 2 + 30 = 32 seconden kost. Het verschil is 120 seconden per build, of 2400 seconden = 40 minuten voor 20 builds.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van cloud en containers

  1. Welke beschrijving van benoemde volumes en bind mounts in Docker, die worden gebruikt om gegevens te bewaren die een container schrijft, is juist?
  2. Een image wordt gehaald (pull) door registry.example.com/team/web:1.4 op te geven. Welke combinatie geeft de betekenis van elk deel van deze verwijzing juist weer?
  3. scratch is een leeg image dat geen enkel bestand bevat. Welke beschrijving van wat het uiteindelijke image bevat dat met het bovenstaande Dockerfile met een multi-stage build is gebouwd, is juist?
  4. Wat is in Kubernetes de kleinste eenheid die wordt gedeployed en beheerd, en die een of meer containers groepeert die hetzelfde IP-adres en dezelfde volumes delen?
  5. In Kubernetes draait een Deployment met replicas: 3 drie Pods. Welke beschrijving van wat er gebeurt als een van deze Pods met kubectl delete pod wordt verwijderd, is juist?