Monivaiheiset koonnit ja pienemmät näköistiedostot
Opitte, miten monivaiheisten Dockerfile-tiedostojen avulla voidaan toimittaa kevyitä tuotantonäköistiedostoja erottamalla koontityökalut lopullisesta suoritusympäristöstä, mikä pienentää näköistiedoston kokoa merkittävästi.
Monivaiheiset koonnit ja pienemmät näköistiedostot on ilmainen Dockerin ja DevOpsin perusteet-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Dockerin ja DevOpsin perusteet-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Dockerin ja DevOpsin perusteet-kurssilla on yhteensä 4 oppituntia.
Miksi imagen koolla on väliä
Suuret imaget ovat hitaita rakentaa, siirtää ja ladata, ja ne tarjoavat hyökkääjille suuremman hyökkäyspinta-alan. Hyvä suunnittelutavoite on julkaista pienin image, jolla sovellus toimii.
Turhan sisällön ongelma
Sovelluksen rakentaminen vaatii usein kääntäjiä, kehitysriippuvuuksia ja rakennustyökaluja. Jos ne päätyvät lopulliseen imageen, sen koko kasvaa huomattavasti, vaikka käynnissä oleva sovellus ei tarvitse niistä yhtäkään.
Mikä on monivaiheinen build
Monivaiheinen build käyttää yhdessä Dockerfilessä useita FROM-lauseita. Varhaiset vaiheet rakentavat sovelluksen, ja viimeinen vaihe kopioi vain valmiit tuotokset jättäen rakennustyökalut pois.
Vaiheen nimeäminen
Nimeä vaihe komennolla AS, jotta myöhemmät vaiheet voivat viitata siihen.
FROM node:20 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ciRakentaminen ensimmäisessä vaiheessa
Build-vaihe kääntää tai paketoi sovelluksen. Tässä vaiheessa kaikki kehitysriippuvuudet ja työkalut ovat käytettävissä.
COPY . .
RUN npm run buildKompakti lopullinen vaihe
Aloita viimeinen vaihe minimaalisesta base-imagesta ja kopioi sitten vain sovelluksen suorittamiseen tarvittavat tiedostot komennolla COPY --from.
FROM node:20-slim
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modulesTäydellinen monivaiheinen Dockerfile
Vaiheiden yhdistäminen tuottaa pienen lopullisen imagen, joka sisältää rakennetun sovelluksen mutta ei yhtäkään rakennustyökaluketjun osaa.
FROM node:20 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-slim
WORKDIR /app
COPY --from=builder /app/dist ./dist
CMD ['node', 'dist/main.js']Pienen base-imagen valitseminen
Base-image on usein merkittävin kokoon vaikuttava tekijä. Slim- ja Alpine-versiot pienentävät imageja huomattavasti:
node:20~ suurinode:20-slim~ paljon pienempinode:20-alpine~ pienin, vain vähän kirjastoja
Vain tuotannon riippuvuudet
Jätä kehitysriippuvuudet pois runtime-imagesta. Tuotantovalitsimella asentaminen pitää testaus- ja build-paketit poissa.
RUN npm ci --omit=dev.dockerignoren käyttäminen
.dockerignore-tiedosto pitää turhan sisällön poissa build-kontekstista, nopeuttaa buildit ja estää salaisuuksien tai valtavien hakemistojen tahattoman kopioinnin.
node_modules
.git
.env
Dockerfile
*.logTuloksen mittaaminen
Varmista työsi tarkistamalla imagejen koot. Hyvin rakennettu monivaiheinen image voi olla vain murto-osa naiivin yksivaiheisen imagen koosta.
docker images myappPikatesti
Testaa, miten hyvin tunnet monivaiheiset buildit.
Yhteenveto
Opit julkaisemaan kompakteja Docker-imageja:
- Monivaiheiset buildit käyttävät yhdessä Dockerfilessä useita
FROM-vaiheita - Rakenna sovellus varhaisessa vaiheessa ja kopioi sitten
COPY --from-komennolla vain tuotokset kompaktiin viimeiseen vaiheeseen - Valitse pienet base-imaget (slim/Alpine) ja asenna vain tuotannon riippuvuudet
- Käytä
.dockerignore-tiedostoa build-kontekstin karsimiseen
Pienemmät imaget rakentuvat nopeammin, siirtyvät tuotantoon nopeammin ja ovat turvallisempia.
Opi Dockerin ja DevOpsin perusteet tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 12
- Oppitunnit
- 48
Usein kysytyt kysymykset
Onko oppitunti ”Monivaiheiset koonnit ja pienemmät näköistiedostot” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Dockerin ja DevOpsin perusteet-oppimispolun 3 oppituntia, myös oppitunnin “Monivaiheiset koonnit ja pienemmät näköistiedostot”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Dockerin ja DevOpsin perusteet-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Monivaiheiset koonnit ja pienemmät näköistiedostot”?
Opitte, miten monivaiheisten Dockerfile-tiedostojen avulla voidaan toimittaa kevyitä tuotantonäköistiedostoja erottamalla koontityökalut lopullisesta suoritusympäristöstä, mikä pienentää näköistiedos… Harjoittelet Dockerin ja DevOpsin perusteet-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Dockerin ja DevOpsin perusteet-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Dockerin ja DevOpsin perusteet-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Monivaiheiset koonnit ja pienemmät näköistiedostot”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Dockerin ja DevOpsin perusteet-oppitunnilla?
Kyllä. Jokainen Dockerin ja DevOpsin perusteet-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Dockerfile-tiedostojen ymmärtäminen
- Mukautettujen Docker-imagien luominen
- Imagetasot ja optimointi
- Monivaiheiset koonnit ja pienemmät näköistiedostot