Bazy danych i cache

PostgreSQL, MySQL i Redis jako kontener w docker-compose.yml aplikacji, która ich potrzebuje - łączysz się po localhost, bez dodatkowych kosztów.

W Saplo baza danych nie jest osobną aplikacją z katalogu - próba postawienia PostgreSQL, MySQL czy Redis jako samodzielnego modułu kończy się błędem. Baza to kontener zdefiniowany we własnym pliku docker-compose.yml aplikacji, która jej potrzebuje. Dotyczy to aplikacji typu Docker: obok serwisu z Twoim kodem dopisujesz w tym samym pliku serwis bazy i łączysz się z nią po localhost - baza i aplikacja żyją w tym samym Boxie, więc połączenie nie wychodzi do internetu.

Przykładowe silniki

Obraz DockeraPo coTypowy port
postgres:16relacyjna baza (Django, Rails, Node)5432
mysql:8 / mariadbrelacyjna baza (WordPress, PHP, Laravel)3306
redis:7cache, sesje, kolejki zadań6379

Jak postawić bazę

  1. Utwórz aplikację typu Docker (panel albo CLI).
  2. W jej docker-compose.yml dopisz serwis bazy obok serwisu aplikacji.
  3. Zdeployuj - saplo deploy albo redeploy z panelu.
services: app: build: . ports: - "8000:8000" environment: DATABASE_URL: postgresql://saplo:haslo@localhost:5432/saplo db: image: postgres:16 restart: unless-stopped environment: POSTGRES_USER: saplo POSTGRES_PASSWORD: haslo POSTGRES_DB: saplo ports: - "127.0.0.1:5432:5432"

Hasło do bazy ustawiasz sam w docker-compose.yml albo jako zmienną środowiskową aplikacji - Saplo go nie generuje ani nie przechowuje osobno.

Jak połączyć bazę z aplikacją

Wystaw port bazy tylko na 127.0.0.1, żeby nie był widoczny z internetu, i podaj aplikacji dane połączenia jako zmienną środowiskową (np. DATABASE_URL) w panelu, sekcja Zmienne środowiskowe, albo przez saplo env set. Nie ma automatycznego wstrzykiwania zmiennych między aplikacjami - to Ty łączysz je ręcznie w konfiguracji.

Przez Claude (MCP)

Powiedz Claude'owi: "dodaj serwis Postgresa do docker-compose.yml mojej aplikacji i podłącz go przez zmienną DATABASE_URL". Claude edytuje plik i wykonuje deploy. Osobnej "aplikacji-bazy" nie da się utworzyć.

Baza żyje wewnątrz kontenera aplikacji i liczy się do zasobów Boxa (RAM, SSD, CPU) jak każdy inny serwis - sama w sobie nic nie kosztuje. Zadbaj o trwały wolumen w docker-compose.yml, żeby dane bazy przeżyły redeploy.