Projektordner erstellen
Lege einen eigenen Ordner an. Darin werden anschließend die Compose-Datei und deine Umgebungsvariablen gespeichert.
mkdir geldstueck
cd geldstueckWeb-App, API und PostgreSQL laufen als drei getrennte Container. Die folgende Einrichtung benötigt nur Docker mit Docker Compose.
Docker Engine oder Docker Desktop mit dem Befehl docker compose. Für einen öffentlichen Server außerdem eine Domain und einen Reverse Proxy mit HTTPS.
Lege einen eigenen Ordner an. Darin werden anschließend die Compose-Datei und deine Umgebungsvariablen gespeichert.
mkdir geldstueck
cd geldstueck.env mit deinen Schlüsseln anlegenDie Datei muss exakt .env heißen und im selben Ordner wie docker-compose.yml liegen. Achte unter Windows darauf, dass sie nicht versehentlich als .env.txt gespeichert wird.
New-Item .env -ItemType File
notepad .envtouch .env
nano .envPOSTGRES_PASSWORD schützt die Datenbank. JWT_SECRET signiert Anmeldungen. Mit REGISTRATION_SECRET dürfen neue Konten erstellt werden. Kopiere den folgenden Inhalt in die neue Datei und ersetze alle drei Platzhalter durch unterschiedliche Zufallswerte.
POSTGRES_DB=geldstueck
POSTGRES_USER=geldstueck
POSTGRES_PASSWORD=HIER_EIN_STARKES_DATENBANKPASSWORT
JWT_SECRET=HIER_EINEN_LANGEN_ZUFAELLIGEN_JWT_SCHLUESSEL
REGISTRATION_SECRET=HIER_DEINEN_REGISTRIERUNGSSCHLUESSELdocker-compose.yml anlegenSpeichere diese Datei direkt neben .env. Ein Ausdruck wie ${POSTGRES_PASSWORD} verweist auf den gleichnamigen Wert aus .env. Der Abschnitt environment übergibt den aufgelösten Wert anschließend an den jeweiligen Container. Die Datenbank ist nur intern erreichbar. API und Web-App werden auf den Ports 3000 und 8080 veröffentlicht.
services:
database:
image: postgres:17-alpine
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- money-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 12
server:
image: techbygiusi/geldstueck-server:latest
restart: unless-stopped
environment:
DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@database:5432/${POSTGRES_DB}
JWT_SECRET: ${JWT_SECRET}
REGISTRATION_SECRET: ${REGISTRATION_SECRET}
PORT: 3000
depends_on:
database:
condition: service_healthy
ports:
- "3000:3000"
web:
image: techbygiusi/geldstueck-web:latest
restart: unless-stopped
depends_on:
- server
ports:
- "8080:80"
volumes:
money-data:Führe die Befehle im Ordner aus, der .env und docker-compose.yml enthält. Die ausdrückliche Angabe von .env macht sichtbar, welche Datei verwendet wird.
docker compose --env-file .env config
docker compose --env-file .env pull
docker compose --env-file .env up -d
docker compose --env-file .env pshttp://DEINE-SERVER-IP:8080API-Statushttp://DEINE-SERVER-IP:3000/health8080.http://DEINE-SERVER-IP:3000 ein.REGISTRATION_SECRET.docker compose pull
docker compose up -ddocker compose exec -T database pg_dump -U geldstueck geldstueck > geldstueck-backup.sql.env-Datei nicht weitergeben.money-data regelmäßig sichern.