Die API für Produktion vorbereiten
Die API für Produktion vorbereiten
~16 Min. Lesezeit Zuletzt aktualisiert am 8. August 2026
JEDES Geheimnis, das in DIESER Schulung als Platzhalter diente (MERCURE_JWT_SECRET, JWT-Schlüsselpaar, Datenbank-Zugangsdaten), MUSS vor einem PRODUKTIONS-Deployment ERSETZT werden.
Umgebungsvariablen für Produktion
APP_ENV=prod
APP_DEBUG=0
APP_SECRET=
DATABASE_URL="postgresql://prod_user:ECHTES_PASSWORT@db-prod-host:5432/aufgaben_manager"
MERCURE_JWT_SECRET=
CORS_ALLOW_ORIGIN='^https://aufgaben-manager\.example\.com$' Achtung: CORS_ALLOW_ORIGIN DARF in Produktion NIEMALS ein Wildcard-Muster wie in der lokalen Entwicklung (Kapitel 8) sein – NUR die TATSÄCHLICHE Domain des Frontends gehört in diesen regulären Ausdruck.
JWT-Schlüssel für Produktion generieren
php bin/console lexik:jwt:generate-keypair --overwrite
# Die erzeugten Dateien (config/jwt/private.pem, public.pem) SICHER
# außerhalb der Versionskontrolle aufbewahren, z. B. über Secrets-ManagementDen Produktions-Container bauen
Die api-platform-Distribution liefert BEREITS ein compose.prod.yaml MIT – ANDERS als das lokale compose.yaml (Kapitel 2) baut es EIN OPTIMIERTES, produktionsreifes FrankenPHP-Image OHNE Entwicklungswerkzeuge (Xdebug, Composer-Dev-Abhängigkeiten).
docker compose -f compose.yaml -f compose.prod.yaml build
docker compose -f compose.yaml -f compose.prod.yaml up -dMigrationen und Cache in Produktion
docker compose exec php bin/console doctrine:migrations:migrate --no-interaction
docker compose exec php bin/console cache:warmupAchtung: doctrine:fixtures:load aus Kapitel 15 gehört NIEMALS in Produktion – die Testdaten (45 Beispielprojekte) würden ECHTE Nutzerdaten ÜBERSCHREIBEN. Migrationen ALLEIN reichen für eine PRODUKTIONS-Datenbank aus.
HTTPS in Produktion
GENAU wie das lokale, SELBSTSIGNIERTE Zertifikat (Kapitel 2) NUR für die Entwicklung taugt, benötigt PRODUKTION ein ECHTES Zertifikat – Caddy/FrankenPHP (BEREITS Teil der Distribution) kann Let's-Encrypt-Zertifikate AUTOMATISCH beziehen, sobald eine ECHTE Domain konfiguriert ist.
Tipp: EIN .env.prod.local (analog zu .env.local aus Kapitel 8) ist der ÜBLICHE Ort für die TATSÄCHLICHEN Produktions-Secrets, AUSSERHALB der Versionskontrolle – Symfonys Secrets-Vault (bin/console secrets:set) ist die NOCH SICHERERE Alternative für SENSIBLE Werte.