Docker multistage build

15. března 2022

Docker multistage build je funkce, která vám může usnadnit přípravu rozličných docker obrazů, které vychází ze stejného základu. Můžete tam připravovat image pro různé účely. A zároveň efektivně připravovat image, které obsahují vše potřebné a přitom minimalistický.

Multistage build

Princip multistage buildu je ten, že v jednom konfiguračním souboru máte uveden společný základ a na jeho základě pak můžete vytvářet různé docker image. Díky tomu tak můžete zefektivnit a zpřehlednit vytváření docker obrazů.
Tedu docker image pro vývoj, pro testing, nebo minimalistický pro produkci

Příklad

Na tomto odkaze je docker multi stage example.
Tento ukázkový projekt můžete použít pro vyzkoušení a také na jeho základě je napsán tento návod.

Tímto příkazem provedete build image pro cíl "base":

docker build --target base ./

Lepší je však si daný image rovnou pojmenovat

 docker build --target base ./ -t php-web-base

Build image pro cíl devel, který si pojmenujeme php-web-dev:

docker build --target devel ./ -t php-web-dev

Build kontejnerů, které jsou uvedeny v douboru docker-compose:

docker-compose -f docker-compose-prod.yml build

Obsah souboru docker-compose. Podstatný je parametr target, který udavá jaký image se má sestavit a následně spustiti.

version: '3.6'
services:
  web:
      build:
        context: ./
        target: devel

Pokud máte kontejner sestaven a pojmenován, tak docker image a shell konzoli v pustíte jako s jakým koli jiným docker obrazem:

docker exec -it  multistage-build_web_1 /bin/bash

Video

Video ukázka a vysvětlení jak docker multistage build funguje:

Zdroje

multistage-build dokumentace

Články na podobné téma

Linux: Logical Volume Management
Linuxový softwarový RAID
Provoz webové aplikace za proxy
Migrace mail schránek
Zálohování dat zapnutím počítače
Podman
Import Windows do virtualizace Proxmox
Docker a PHP mail
Virtualizace Proxmox
Docker a Cron
Lenovo ThinkPad X1 Carbon: zprovoznění LTE modemu EM7544
Yocto Project: Build vlastního operačního sytému pro embedded zařízení
Příprava linuxového serveru pro běh webové aplikace v jazyce Python
Jak řešit špatný výkon sdílených souborů u Dockeru
Jak začít správně používat Docker
Instalace Linuxu na dedikovaný server HPE ProLiant DL320e
Jak provést zátěžový test webové aplikace
Proč používat filesystém JFS
Jak bootovat z 4TB disku s GTP pomocí UEFI
Jak nainstalovat operační systém Magei Linux bez DVD mechaniky
Souborový systém Btrfs
Raspberry PI
Jak zprovoznit vzdálené přehrávání přes síť na televizi s DLNA
Upgrade Mandriva Linuxu za běhu
Poznámky ke GNU/Linux
WINE - spouštíme programy pro Windous pod Linuxem
Operační systém GNU/Linux

Odběr novinek

Pokud máte zájem dostávat příležitostně na email novinky.
Můžete se vyplněním emailu registrovat k odběru novinek.


+