Maximilian Frick
07/15/2025, 1:06 PMMarvin
07/15/2025, 1:06 PMMarvin
07/15/2025, 1:06 PMdocker-compose.yml
Setup für eine lokale Prefect-Testumgebung:
yaml
version: '3.8'
services:
server:
image: prefecthq/prefect:2-latest
restart: always
volumes:
- prefect_data:/root/.prefect
environment:
- PREFECT_UI_API_URL=<http://localhost/api>
- PREFECT_API_URL=<http://localhost/api>
- PREFECT_SERVER_API_HOST=0.0.0.0
- PREFECT_SERVER_API_PORT=4200
ports:
- "4200:4200"
command: prefect server start
nginx:
image: nginx:latest
restart: always
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
depends_on:
- server
volumes:
prefect_data:
Sie benötigen auch eine nginx.conf
Datei im gleichen Verzeichnis:
nginx
server {
listen 80;
server_name localhost;
location /api/ {
proxy_pass <http://server:4200/api/;>
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
proxy_pass <http://server:4200/;>
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Um diese Umgebung zu starten:
1. Speichern Sie beide Dateien in einem Verzeichnis
2. Öffnen Sie ein Terminal in diesem Verzeichnis
3. Führen Sie aus:
bash
docker compose up -d
Nach dem Start können Sie auf die Prefect UI zugreifen unter:
- http://localhost
Für die Konfiguration Ihres Prefect Clients:
bash
prefect config set PREFECT_API_URL=<http://localhost/api>
Einige wichtige Hinweise:
- Diese Konfiguration verwendet Nginx als Reverse Proxy
- Die Prefect-Daten werden in einem Docker-Volume persistiert
- Der Server ist über Port 80 erreichbar
- Die Konfiguration enthält die notwendigen Umgebungsvariablen für die korrekte Kommunikation zwischen UI und API
Sie können die Logs überprüfen mit:
bash
docker compose logs -f
Und die Services stoppen mit:
bash
docker compose down
Wenn Sie die Daten komplett zurücksetzen möchten:
bash
docker compose down -v
Diese Konfiguration ist ideal für lokale Entwicklung und Tests. Für Produktionsumgebungen würden Sie möglicherweise zusätzliche Sicherheitsmaßnahmen und Konfigurationen benötigen.Maximilian Frick
07/15/2025, 1:07 PMMarvin
07/15/2025, 1:08 PMMarvin
07/15/2025, 1:10 PMdocker-compose.yml
mit PostgreSQL:
yaml
version: '3.8'
services:
postgres:
image: postgres:15
restart: always
environment:
- POSTGRES_USER=prefect
- POSTGRES_PASSWORD=prefect
- POSTGRES_DB=prefect
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U prefect"]
interval: 10s
timeout: 5s
retries: 5
server:
image: prefecthq/prefect:2-latest
restart: always
volumes:
- prefect_data:/root/.prefect
environment:
- PREFECT_UI_API_URL=<http://localhost/api>
- PREFECT_API_URL=<http://localhost/api>
- PREFECT_SERVER_API_HOST=0.0.0.0
- PREFECT_SERVER_API_PORT=4200
# PostgreSQL Konfiguration
- PREFECT_API_DATABASE_CONNECTION_URL=<postgresql+asyncpg://prefect:prefect@postgres:5432/prefect>
ports:
- "4200:4200"
command: prefect server start
depends_on:
postgres:
condition: service_healthy
nginx:
image: nginx:latest
restart: always
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
depends_on:
- server
volumes:
postgres_data:
prefect_data:
Die nginx.conf
bleibt unverändert:
nginx
server {
listen 80;
server_name localhost;
location /api/ {
proxy_pass <http://server:4200/api/;>
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
proxy_pass <http://server:4200/;>
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Die wichtigsten Änderungen und Hinweise:
1. Neuer PostgreSQL Service:
- Verwendet PostgreSQL 15
- Eigenes Volume für Datenpersistenz
- Healthcheck zur Überprüfung der Datenbankbereitschaft
- Standardzugangsdaten (für Entwicklung):
- Benutzer: prefect
- Passwort: prefect
- Datenbank: prefect
2. Prefect Server Konfiguration:
- Neue Umgebungsvariable für PostgreSQL-Verbindung
- Wartet auf PostgreSQL-Bereitschaft durch depends_on
condition
Verwendung:
1. Dateien speichern und Terminal öffnen
2. Start der Services:
bash
docker compose up -d
3. Überprüfen der Logs:
bash
docker compose logs -f
4. Client-Konfiguration:
bash
prefect config set PREFECT_API_URL=<http://localhost/api>
5. Zugriff auf die UI:
- http://localhost
Zum Stoppen und Aufräumen:
bash
# Stoppen der Services
docker compose down
# Komplettes Aufräumen inkl. Volumes (löscht alle Daten!)
docker compose down -v
Wichtige Sicherheitshinweise:
- Die verwendeten Zugangsdaten sind nur für Entwicklungszwecke geeignet
- Für Produktionsumgebungen sollten Sie:
- Sichere Passwörter verwenden
- Umgebungsvariablen aus einer .env
Datei laden
- Zusätzliche Sicherheitsmaßnahmen implementieren
- Backup-Strategien einrichten
Sie können die PostgreSQL-Datenbank auch direkt erreichen über:
bash
docker compose exec postgres psql -U prefect -d prefect
Diese Konfiguration bietet eine robustere Lösung mit persistenter Datenspeicherung in PostgreSQL, was besonders nützlich ist für:
- Längerfristige Datenspeicherung
- Bessere Skalierbarkeit
- Einfachere Backups
- Bessere Performance bei größeren Datenmengen