2 min čtení

Volumes a bind mounts: kde ukladať dáta vo vývoji

Ako správne uložiť perzistentné dáta a ako mať živý reload kódu v kontajneri.

Bez perzistentného úložiska je Docker frustrujúci: reštartuješ kontajner a databáza či uploady zmiznú. Tento článok ti ukáže, kedy použiť volume a kedy bind mount.

Volume vs bind mount v praxi

  • Volume: spravuje Docker, ideálne pre databázy a produkčné dáta.
  • Bind mount: priamo mapuje priečinok z hosta, ideálne pre lokálny vývoj kódu.

Pravidlo:

  • app source kód -> bind mount
  • DB dáta -> volume

Named volume pre perzistenciu dát

BASH
docker volume create mysql_data
docker run --name mysql-dev -d \
-e MYSQL_ROOT_PASSWORD=root \
-e MYSQL_DATABASE=app \
-v mysql_data:/var/lib/mysql \
-p 3306:3306 mysql:8.4

Ak kontajner zmažeš a spustíš znova s rovnakým volume, dáta ostanú.

Bind mount pre live reload

BASH
docker run --name node-dev -it --rm \
-v "$(pwd)":/app \
-w /app \
-p 3000:3000 node:22-alpine sh

Zmeny v lokálnych súboroch sa okamžite prejavia v kontajneri.

Overenie a údržba

BASH
docker volume ls
docker volume inspect mysql_data
docker volume rm mysql_data

Volume maž až keď si si istý, že už ho nepotrebuješ.

Najčastejšie chyby

  • Databáza beží bez volume a po reštarte je „čistá“.
  • Bind mount prepíše obsah, ktorý bol zabudovaný v image.
  • Zlý mount path (napr. preklep v /var/lib/mysql) a perzistencia nefunguje.

Mini úloha

  1. Spusť MySQL s named volume.
  2. Vlož testovaciu tabuľku.
  3. Zmaž kontajner a spusti ho znova s tým istým volume.
  4. Over, že tabuľka stále existuje.

Overenie v praxi

  • Spusť docker compose ps a over, že všetky potrebné služby sú Up.
  • Skontroluj logy cez docker compose logs --tail=100 a hľadaj chyby pri štarte.
  • Over prístupnosť služby cez jej reálny endpoint (HTTP, DB port, healthcheck).

Čo bude ďalej

Nasleduje sieť: bridge network a izolácia služieb, aby API, DB a pomocné služby spolu komunikovali bezpečne.

Předchozí článekTypeScript strict a vue-tsc v Nuxt/VueNásledující článekController, constructor DI a typy response (JSON, model, resource)
Zpět na seznam článků