Dockerfile a vlastný image: Ako si vytvoriť vlastný kontajner (2. diel)

Tvorba vlastného Docker image pomocou Dockerfile – detailný návod krok za krokom.

Dockerfile a vlastný image: Ako si vytvoriť vlastný kontajner (2. diel)
Photo by Bernd 📷 Dittrich / Unsplash

V predchádzajúcej časti sme si ukázali, ako spustiť hotové kontajnery. V tomto diely si vytvoríme vlastný Docker image pomocou Dockerfile a ukážeme si, čo všetko sa dá doňho zabaliť.

🧱 Čo je Dockerfile?

Dockerfile je textový súbor, ktorý popisuje, ako má tvoj image vyzerať. Obsahuje inštrukcie ako:

  • základný image, z ktorého vychádzame (napr. PHP, Node, Alpine...)
  • čo sa má nainštalovať, skopírovať alebo spustiť
  • na akom porte má služba počúvať

📁 Struktúra adresára

./mojprojekt/
├── Dockerfile
├── index.html
└── start.sh

V tomto príklade si vytvoríme jednoduchý image, ktorý bude obsahovať statický web.

📝 Príklad Dockerfile

# Použijeme malý image s Nginx
FROM nginx:alpine

# Skopírujeme náš HTML súbor do správneho adresára
COPY index.html /usr/share/nginx/html/index.html

# Definujeme port
EXPOSE 80

Tento Dockerfile vytvorí image, ktorý spustí Nginx s našou vlastnou úvodnou stránkou.

🔨 Build vlastného image

docker build -t moj-nginx .

👉 Docker prečíta Dockerfile a vytvorí image s názvom moj-nginx.

🚀 Spustenie vlastného image

docker run -d -p 8080:80 moj-nginx

Spustí náš nový kontajner a otvorí ho na porte 8080. Ak pôjdeš na localhost:8080, uvidíš index.html.

📜 Pokročilejší príklad: Node.js aplikácia

Chceme spustiť vlastnú Node.js appku. Štruktúra adresára:

./nodeapp/
├── Dockerfile
├── package.json
└── index.js

📄 Dockerfile pre Node:

FROM node:18-alpine

WORKDIR /app

COPY package*.json ./
RUN npm install

COPY . .

EXPOSE 3000
CMD ["node", "index.js"]

Potom už len stačí:

docker build -t moja-node-app .
docker run -d -p 3000:3000 moja-node-app

A tvoja aplikácia beží izolovane v kontajneri!

🧠 Záver

Pomocou Dockerfile vieš presne definovať, ako má tvoja aplikácia vyzerať, čo potrebuje a kde beží. V ďalšom diely si ukážeme, ako tieto kontajnery spojiť do jednej aplikácie pomocou Docker Compose.