Wprowadzenie do Docker i konteneryzacji dla programistów, którzy chcą usprawnić swój workflow.
"U mnie działa" - to zdanie jest powodem ~30% konfliktów między developerami a DevOps. Docker to rozwiązuje. Pakujesz aplikację razem z jej środowiskiem i działa wszędzie tak samo.
Docker w 60 sekund
Bez Dockera
- "Zainstaluj Node 18... nie, czekaj, 16... albo 20"
- "Mam inną wersję PostgreSQL"
- "Na Windows działa, na Linuxie nie"
- Każdy dev ma inne środowisko
- Setup nowego developera = pół dnia
Z Dockerem
- Wersje zdefiniowane w Dockerfile
- Baza danych w kontenerze (ta sama u wszystkich)
- Działa wszędzie gdzie jest Docker
- Identyczne środowisko dla całego zespołu
- Setup = `docker-compose up`
Podstawowe pojęcia
"Przepis" na kontener
Niezmienne, read-only. Definiuje: bazowy OS, zainstalowane pakiety, kod aplikacji. Wersjonowane, przechowywane w registry (Docker Hub, ECR).
Uruchomiony image
Izolowany proces z własnym filesystem, siecią, PID namespace. Można mieć wiele kontenerów z tego samego image'a.
Instrukcje budowy image'a
Tekstowy plik z krokami: FROM (bazowy image), COPY (kopiuj pliki), RUN (wykonaj komendy), CMD (co uruchomić).
Orkiestracja wielu kontenerów
Definiujesz: app + baza + redis + nginx w jednym pliku. `docker-compose up` = wszystko działa.
Przykładowy Dockerfile (Node.js)
# Bazowy image
FROM node:20-alpine
# Katalog roboczy
WORKDIR /app
# Kopiuj package.json i instaluj zależności
COPY package*.json ./
RUN npm ci --only=production
# Kopiuj kod aplikacji
COPY . .
# Expose port
EXPOSE 3000
# Uruchom aplikację
CMD ["node", "server.js"]
Najważniejsze komendy
Docker Compose - przykład
# docker-compose.yml
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
depends_on:
- db
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: secret
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
Teraz `docker-compose up` uruchamia aplikację + bazę danych. Działa na każdym komputerze z Dockerem.
Kiedy NIE używać Dockera?
Super prosty projekt - jedna statyczna strona? Może overkill.
Brak DevOps w zespole - Docker wymaga nauki. Jeśli nikt go nie zna, może przynieść więcej problemów.
Windows-specific aplikacje - Docker na Windows jest... skomplikowany.
Chcesz wdrożyć Docker w swoim projekcie?
Pomożemy skonfigurować środowisko, napisać Dockerfile i przeszkolić zespół z podstaw konteneryzacji.