Eine App mit PostgreSQL-Datenbank ausrollen
Eine App mit verwalteter PostgreSQL-17-Datenbank auf blitz.cloud hosten. DATABASE_URL wird gesetzt, die Datenbank ist privat und wird jede Nacht gesichert.
Auf blitz.cloud wird eine Datenbank für dich angelegt, während du die App online stellst. Du schaltest "Needs a database" ein, wählst PostgreSQL, und blitz.cloud startet eine PostgreSQL-17-Datenbank, setzt DATABASE_URL für deine App und kopiert die Datenbank jede Nacht an einen anderen Ort. Die Datenbank hat keine öffentliche Adresse; nur deine eigenen Apps erreichen sie.
Diese Anleitung nutzt das node-api-Beispiel, eine kleine API, die Notizen in PostgreSQL speichert. Die Schritte gelten für jedes Image, das einen Connection String aus einer Umgebungsvariable liest.
Wie die App die Datenbank findet
Bei einem Image, das du selbst mitbringst, schaut blitz.cloud in das Image, um zu erraten, welche Einstellungen es erwartet. Erkennt es Datenbank-Variablen, nennt der Assistent sie, bevor irgendetwas angewendet wird. Erkennt es keine und du willst eine Datenbank, setzt es eine einzige DATABASE_URL:
postgresql://<user>:<password>@<host>:5432/<database>
Der Host ist ein kurzer interner Name, der nur innerhalb deines eigenen Bereichs auf blitz.cloud aufgelöst wird. Dein App-Code braucht nicht mehr als das:
import pg from "pg";
const pool = process.env.DATABASE_URL
? new pg.Pool({ connectionString: process.env.DATABASE_URL, max: 5 })
: null;
TLS-Optionen sind nicht nötig: Die Verbindung verlässt nie das interne Netz von blitz.cloud, und Netzwerkregeln halten andere Konten fern.
Erst mit einer lokalen Datenbank testen
docker network create notes-net
docker run -d --name notes-db --network notes-net \
-e POSTGRES_USER=app -e POSTGRES_PASSWORD=secret -e POSTGRES_DB=app \
postgres:17-alpine
docker build --platform linux/amd64 -t blitz-example-node-api .
docker run --rm --network notes-net --user 1000:1000 --cap-drop ALL \
--security-opt no-new-privileges -p 8080:8080 \
-e DATABASE_URL=postgresql://app:secret@notes-db:5432/app \
blitz-example-node-api
curl -X POST -H 'content-type: application/json' -d '{"text":"first note"}' http://localhost:8080/notes
# {"id":1,"text":"first note","created_at":"..."}
curl http://localhost:8080/notes
In unserem Test lieferte der POST ein 201 und der GET die Notiz zurück. Die App legt ihre Tabelle beim ersten Start an, und genau dieses Muster solltest du übernehmen: Migrationen beim Start des Prozesses ausführen, denn auf blitz.cloud gibt es keinen separaten Schritt dafür.
Aufräumen mit docker rm -f notes-db && docker network rm notes-net.
Mit Datenbank ausrollen
- Lade das Image auf Docker Hub hoch, wie in Node.js-API hosten beschrieben.
- Klicke im Dashboard auf "Host something new" (Neues hosten), wähle "An app that is already packaged up", suche dein Image und wähle die Version.
- Schau auf dem nächsten Bildschirm unter "What this app needs". Steht in der Zeile "Database" schon PostgreSQL, hat blitz.cloud es erkannt. Steht dort "Not needed", öffne "Advanced settings", schalte "Needs a database" ein und lass "Which one" auf PostgreSQL.
- Gib der App einen Namen, wähle eine Adresse und klicke auf "Put it online".
Die Datenbank erscheint auf der Seite "Databases" zusammen mit der App, zu der sie gehört. Ihr Connection String ist dort maskiert, bis du ihn per Klick anzeigst.
Was du wissen solltest, bevor du dich darauf verlässt
Eine App, eine Datenbank. Eine Datenbank gehört genau zu einer App, zwei Apps können sich keine teilen. Der kostenlose Tarif enthält eine Datenbank; sie nimmt außerdem 128 MB aus deinem 2-GB-Arbeitsspeicher und reserviert 1 GB deines Speicherplatzes.
Nächtliche Backups. Jede Nacht wird die Datenbank exportiert und in einen separaten Speicher kopiert, außerhalb der Server, auf denen deine Apps laufen. Der kostenlose Tarif behält 7 Nächte. Zurück zu einer Nacht geht per Button auf der Seite "Databases", und das ersetzt die gesamte Datenbank durch die Kopie dieser Nacht. Details unter Backups.
Kein Zugriff von außen. Heute kannst du dich nicht von deinem Laptop mit psql oder einem GUI-Client verbinden. Wenn du hineinschauen musst, füge ein kleines Admin-Tool als zweite App hinzu oder bau die Abfrage in deine eigene App ein.
Beim Löschen der App wird nach den Daten gefragt. Wenn du die App löschst, wirst du ohne Voreinstellung gefragt, ob die Datenbank bleiben oder zusammen mit allen nächtlichen Kopien gelöscht werden soll.
MariaDB 11.4 und Redis (bereitgestellt von Valkey 8) gibt es ebenfalls. MongoDB nicht. Mehr unter Datenbanken.
Stell heute deine erste App online.
Kostenloser Tarif, keine Kreditkarte, keine Warteliste.
Kostenloses Konto anlegen