Przejdź do głównej zawartości

Architektura i wdrożenie

Produkcja działa na VPS3 za hostowym Caddy. Next.js i Django są publikowane wyłącznie na portach loopback hosta, a PostgreSQL pozostaje w prywatnej sieci Dockera.

Topologia

UsługaEkspozycja
web127.0.0.1:3062
backend127.0.0.1:8068
docs127.0.0.1:3072
dbtylko sieć internal

Bezpieczny rollout aplikacji

Na VPS używaj obu plików Compose. Pominięcie compose.vps.yaml usuwa mapowanie portów dla hostowego Caddy.

cd /home/pj/apps/splot
docker compose -f compose.yaml -f compose.vps.yaml up -d --build backend web docs
docker compose -f compose.yaml -f compose.vps.yaml ps

Backend przy starcie wykonuje migracje i collectstatic. Produkcja nie uruchamia automatycznie danych demo. Showcase zasiewa się wyłącznie świadomą komendą administracyjną.

Kolejność weryfikacji

  1. docker compose ... ps — kontenery są healthy.
  2. Loopback backendu zwraca 200 dla /api/v1/health.
  3. Loopback webu zwraca stronę.
  4. Loopback dokumentacji zwraca stronę.
  5. Konfiguracja Caddy przechodzi caddy validate.
  6. Publiczne domeny odpowiadają po HTTPS.
  7. Logowanie i jeden nieinwazyjny odczyt API działają.

Dokumentacja

Docusaurus generuje statyczny build w kontenerze Node, a obraz runtime serwuje go przez Caddy. Dokumentacja nie łączy się z bazą i nie otrzymuje sekretów backendu.

Rollback

Nie usuwaj wolumenów bazy podczas rollbacku. Przy problemie z warstwą UI wróć do poprzedniego obrazu aplikacji albo ponownie zbuduj poprzedni commit. Migracja wymagająca nieodwracalnej zmiany danych musi mieć osobny plan odtworzenia.

Sekrety

.env nie jest kopiowany przez deployment. Zawiera klucz Django, dane PostgreSQL i opcjonalne klucze storage. Nie umieszczaj wartości sekretów w dokumentacji, obrazie kontenera ani historii Git.