Docker

Docker

Projekt używa Docker Desktop z wieloetapowym Dockerfile i docker-compose.yml opartym na profilach.


Profile

Profil Kontener Port Opis
dev combo_dev 5173 Vite hot-reload, pliki montowane z hosta
prod combo_prod 4173 nginx serwujący zbudowany dist/

Komendy

Uruchomienie — tryb dev

docker compose --profile dev up

Aplikacja dostępna pod http://localhost:5173

Każda zmiana w src/ lub public/data/ jest widoczna w przeglądarce natychmiast bez restartu kontenera.

Uruchomienie — tryb prod

docker compose --profile prod up --build

Aplikacja dostępna pod http://localhost:4173

Zatrzymanie

docker compose --profile dev down
# lub
docker compose --profile prod down

Rebuild po zmianie zależności (package.json)

docker compose --profile dev build --no-cache
docker compose --profile dev up

Podgląd logów (live)

docker logs combo_dev -f

Shell wewnątrz kontenera

docker exec -it combo_dev sh

Sieć

Projekt używa izolowanej sieci combo_net (bridge, 172.23.0.0/16).

Nie koliduje z istniejącymi kontenerami WordPress:

Kontener Port Sieć
spzw_wp 8080 spzw_frontend
spzw_pma 8081 spzw_frontend
spzw_db 3306 spzw_backend
combo_dev 5173 combo_net
combo_prod 4173 combo_net

Struktura plików Docker

combo-raport-app/
├── Dockerfile          # 5 etapów: base → deps → dev / build → prod
├── docker-compose.yml  # profile dev i prod
├── .dockerignore       # wyklucza node_modules, dist, .git, .claude
└── docker/
    └── nginx.conf      # SPA routing, cache assetów, nagłówki bezpieczeństwa

Dockerfile — etapy

base  (node:22-alpine + pnpm via corepack)
 └─ deps  (pnpm install --frozen-lockfile, cache mount)
     ├─ dev    → EXPOSE 5173, CMD vite --host 0.0.0.0
     ├─ build  → RUN pnpm build
     └─ prod   → nginx:1.27-alpine, EXPOSE 4173

Etap prod kopiuje tylko dist/ — nie zawiera node_modules ani kodu źródłowego.


nginx.conf — kluczowe zachowania


Wskazówki

Zmiana portu dev — edytuj docker-compose.yml ("5173:5173") i dodaj server: { port: XXXX } w vite.config.ts, następnie zrób rebuild.

Logi w Docker Desktop — zakładka Containers → kliknij combo_dev → zakładka Logs.

Uruchomienie bez Dockera (lokalnie) — patrz Struktura projektu → Skrypty pnpm.


Revision #5
Created 2026-05-28 04:01:02 CEST by matzxp84
Updated 2026-05-28 04:34:06 CEST by matzxp84