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ługa | Ekspozycja |
|---|---|
web | 127.0.0.1:3062 |
backend | 127.0.0.1:8068 |
docs | 127.0.0.1:3072 |
db | tylko 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
docker compose ... ps— kontenery są healthy.- Loopback backendu zwraca
200dla/api/v1/health. - Loopback webu zwraca stronę.
- Loopback dokumentacji zwraca stronę.
- Konfiguracja Caddy przechodzi
caddy validate. - Publiczne domeny odpowiadają po HTTPS.
- 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.