Docker #1: Jak vytvořit vlastní Docker image na Windows

Kontejnerizace, v čele s nástroji jako je Docker, se stává základním kamenem moderního softwarového inženýrství, poskytující vývojářům flexibilitu, škálovatelnost a zjednodušenou správu aplikací. V tomto článku vás provedu procesem vytváření vlastního Docker kontejneru v prostředí Windows.

V dnešním rychle se vyvíjejícím světě softwarového inženýrství se kontejnerizace stává klíčovou technologií, která umožňuje vývojářům efektivněji vytvářet, nasazovat a spravovat aplikace. Docker, jako jeden z předních nástrojů pro kontejnerizaci, nabízí flexibilní a mocnou platformu pro vývoj software. Tento článek je určen pro začínající vývojáře nebo IT profesionály, kteří se chtějí naučit základy Dockeru a kontejnerizace aplikací.

Co je to kontejnerizace?

Kontejnerizace je proces "zabalení" softwaru spolu s jeho potřebnými knihovnami, závislostmi a konfiguracemi do standardizovaných jednotek, známých jako kontejnery. Cílem je zajistit, aby software konzistentně a spolehlivě fungoval v různých výpočetních prostředích.

Klíčové výhody kontejnerizace jsou následující:

  1. Izolace: Každý kontejner je izolovaný a obsahuje vše potřebné pro spuštění aplikace. Toto oddělení zajišťuje, že aplikace nebude ovlivněna změnami v jiných aplikacích nebo na hostitelském systému.

  2. Lehkost: Kontejnery sdílejí jádro operačního systému hostitele, ale jsou mnohem lehčí než tradiční virtuální stroje, protože nevyžadují celý operační systém pro každou instanci. To vede k výrazně menší spotřebě zdrojů a rychlejšímu spouštění.

  3. Přenositelnost: Vzhledem k tomu, že kontejnery zahrnují vše potřebné pro spuštění aplikace, mohou být snadno přeneseny mezi různými prostředími, jako jsou různé servery nebo cloudové platformy, bez nutnosti dodatečných úprav.

  4. Konzistence: Kontejnerizace zajišťuje konzistenci prostředí napříč vývojovým, testovacím a produkčním prostředím, což snižuje "fungovalo to na mém počítači" problémy.

  5. Efektivita vývoje: Vývojáři mohou pracovat v lokalizovaných a samostatných prostředích, což minimalizuje konflikty mezi různými projekty a zjednodušuje správu závislostí.

  6. Škálovatelnost a Správa: Kontejnery lze snadno škálovat nahoru a dolů, což umožňuje efektivní správu zdrojů. Také usnadňují procesy automatizace a orchestrace, jako je kontinuální integrace a nasazení (CI/CD).

Krok 1: Instalace Dockeru na Windows 11

  1. Stáhnutí Docker Desktop

    • Navštivte oficiální stránku Dockeru a stáhněte si Docker Desktop pro Windows.
    • Ujistěte se, že váš systém splňuje požadavky pro instalaci (např. systémová verze, dostupný prostor na disku).
  2. Instalace Docker Desktop

    • Spusťte stažený instalační soubor a postupujte podle pokynů na obrazovce.
    • Během instalace může být požadováno povolení změn na vašem zařízení.
  3. Restartování počítače

    • Po dokončení instalace je doporučeno restartovat počítač, aby se zajistilo správné nastavení.
  4. Ověření Instalace

    • Otevřete příkazový řádek (CMD) nebo PowerShell.
    • Spusťte příkaz docker --version a docker-compose --version k ověření, že Docker byl správně nainstalován a je funkční.
  5. Povolení WSL 2

    • Docker na Windows využívá Windows Subsystem for Linux (WSL 2). Ujistěte se, že je WSL 2 povolený v systémových nastaveních.
    • Pokud není, můžete jej povolit podle oficiálního návodu Microsoftu.

Po dokončení těchto kroků by měl být Docker Desktop nainstalován a připraven k použití na vašem Windows 11. 

Krok 2: Vytvoření Základní PHP Aplikace

  1. Vytvoření Složky pro Aplikaci

    • Na vašem počítači vytvořte novou složku pro váš Docker projekt, například php-docker-app.
    • Tato složka bude obsahovat všechny soubory spojené s vaší aplikací a Dockerem.
  2. Psaní PHP Skriptu

    • V této složce vytvořte soubor index.php.
    • Otevřete tento soubor v textovém editoru a napište jednoduchý PHP skript. Například skript, který přijímá dvě čísla jako vstup a vypíše jejich součet.
<?php
if (isset($_GET['a']) && isset($_GET['b'])) {
    $a = intval($_GET['a']);
    $b = intval($_GET['b']);
    echo "Total: " . ($a + $b);
} else {
    echo "Type 'a' a 'b' in URL.";
}

Tento skript používá superglobální proměnnou $_GET k získání hodnot a a b z URL a poté vypočítá a zobrazí jejich součet.

V tuto chvíli by vaše projektová složka měla obsahovat pouze soubor index.php.

Tento krok vytvořil základ pro vaši PHP aplikaci, kterou budeme kontejnerizovat pomocí Dockeru.

Krok 3: Příprava Dockerfile

V projektové složce (php-docker-app) vytvořte soubor bez přípony s názvem Dockerfile.Dockerfile je recept, který Docker používá k vytvoření image vaší aplikace.

Specifikace Základního Obrazu

Na začátku Dockerfile specifikujte základní obraz, od kterého chcete začít. Pro PHP

Do Dockerfile: vložíme následující obsah:

FROM php:7.4-cli
COPY index.php /usr/src/myapp/
WORKDIR /usr/src/myapp
CMD [ "php", "-S", "0.0.0.0:80", "index.php" ]
  • FROM php:7.4-cli
    Tento řádek instruuje Docker, aby použil PHP 7.4 CLI obraz jako základ pro váš kontejner.
  • COPY index.php /usr/src/myapp/
    WORKDIR /usr/src/myapp

    Tyto příkazy zkopírují index.php do specifikované složky v obrazu a nastaví tuto složku jako pracovní adresář.
  • CMD [ "php", "-S", "0.0.0.0:80", "index.php" ]
    Tento příkaz spustí vestavěný PHP server, naslouchající na portu 80, a použije index.php jako vstupní bod.

Tímto krokem jste připravili vše potřebné pro vytvoření Docker image vaší PHP aplikace.

Krok 4: Build Docker Image

  1. Otevření Příkazového Řádku nebo PowerShellu

    • Otevřete příkazový řádek (CMD) nebo PowerShell na vašem počítači.
  2. Přechod do Projektové Složky

    • Přejděte do složky, kde jste vytvořili svůj Dockerfile (např. php-docker-app), použitím příkazu cd. Například:
cd cesta\k\složce\php-docker-app

Spusťte build proces Docker image pomocí následujícího příkazu:

docker build -t php-docker-app .

Tento příkaz říká Dockeru, aby vytvořil image z Dockerfile ve vaší aktuální složce (.) a pojmenoval tento image php-docker-app.

Po dokončení build procesu můžete ověřit, že váš image byl úspěšně vytvořen pomocí následujícího příkazu:

docker images

Měli byste vidět php-docker-app v seznamu dostupných Docker images. 

Tímto krokem jste úspěšně vytvořili Docker image vaší PHP aplikace. Tento image můžete nyní použít ke spuštění kontejneru.

Krok 5: Spuštění Kontejneru z Image

Otevřete příkazový řádek (CMD) nebo PowerShell.

Spusťte kontejner z vašeho vytvořeného Docker image pomocí následujícího příkazu:

docker run -p 8000:80 php-docker-app

Tento příkaz říká Dockeru, aby spustil kontejner z vašeho php-docker-app image.

Přepínač -p 8000:80 mapuje port 8000 na vašem hostitelském počítači na port 80 v kontejneru, což je port, na kterém běží PHP server.

Může se stát, že port 8000 bude obsazen jinou aplikací na vašem počítači. Pokud se tak stane můžeme jednoduše změnit číslo portu tak, aby nebyl v kolizi.

docker run -p 8080:80 php-docker-app

Otevřete webový prohlížeč a zadejte URL adresu http://localhost:8080.

Měli byste vidět výstup vaší PHP aplikace nebo zprávu požadující zadání čísel a a b v URL.

Tímto krokem jste úspěšně spustili kontejner z vašeho Docker image a vaše PHP aplikace by měla být přístupná a funkční.

Vyzkošíme, jestli nám aplikace počítá správně zadáním následující adresy do URL prohlížeče:

http://localhost:8080/?a=3&b=4

Tímto krokem jste úspěšně otestovali funkčnost vaší Dockerizované PHP aplikace. Nyní máte funkční prostředí pro další vývoj a experimentování.

Závěrem

V tomto průvodci jsme prošli celým procesem vytváření vlastního Docker kontejneru od začátku až do konce v prostředí Windows. 

Díky tomu jste získali praktické dovednosti v oblasti Dockeru, což je klíčová komponenta v moderním softwarovém vývoji. Naučili jste se, jak používat Docker k izolaci a nasazení aplikací ve standardizovaném prostředí, což vám poskytuje flexibilitu a snadnou správu aplikací. Tyto dovednosti jsou cenné pro vývojáře, kteří chtějí zlepšit své schopnosti vytváření a správy kontejnerizovaných aplikací.