Docker Compose i Budowanie Obrazów
1. Sieci w Docker Compose
Docker Compose automatycznie tworzy sieć dla usług, ale możemy ją ręcznie skonfigurować dla lepszej izolacji (np. separacja Frontendu od Bazy Danych).
Przykład izolacji (Tiered Networking)
W tym układzie backend działa jako most – widzi obie sieci, podczas gdy app i db są od siebie całkowicie odizolowane.
YAML
services:
app:
image: alpine:latest
tty: true
networks:
- frontend
backend:
image: alpine:latest
tty: true
networks:
- frontend
- backend
db:
image: alpine:latest
tty: true
networks:
- backend
networks:
frontend:
backend:
Ważne: Wewnątrz tej samej sieci kontenery komunikują się po nazwach usług (DNS). Z kontenera
appmożesz wykonaćping backend.
2. Wolumeny i Porty w Compose
Uproszczona konfiguracja dla środowiska deweloperskiego.
| Cecha | Konfiguracja w YAML | Opis |
|---|---|---|
| Porty | 8080:80 |
Host (8080) przekierowuje na kontener (80). |
| Wolumen | db_data:/var/lib/mysql |
Trwałe przechowywanie danych bazy. |
| Bindowanie | ./:/usr/share/nginx/html |
Mapowanie plików z Twojego dysku do kontenera (zmiany w kodzie widać od razu). |
3. Tworzenie Własnych Obrazów (Dockerfile)
Nie musisz budować wszystkiego od zera. Rozszerzasz gotowe obrazy (np. Alpine, Node, Nginx).
Przykładowy Dockerfile (Node.js na Ubuntu)
Dockerfile
FROM ubuntu:latest
# Instalacja paczek systemowych
RUN apt-get update && apt-get install -y nodejs npm
# Konfiguracja katalogu roboczego
RUN mkdir /app
WORKDIR /app
# Kopiowanie kodu aplikacji
COPY app.js .
# Komenda startowa
CMD ["node", "app.js"]
Budowanie i uruchamianie
Jeśli używasz Docker Compose do budowania:
- Budowanie:
docker compose build - Uruchomienie z przebudowaniem:
docker compose up --build(wymagane, jeśli zmieniłeś coś wDockerfilelubindex.html). - Sam Docker CLI:
docker build -t moja-nazwa:v1 .