Ich habe eine Knotenanwendung, die ein Firebase-Dienstkonto verwendet. Ich möchte die App auf Heroku bereitstellen, aber ich möchte meine geheimen Schlüssel nicht veröffentlichen. Ich verwende die Bereitstellung direkt aus einem öffentlichen Github-Repository, daher möchte ich die Dienstkontodatei nicht in die Bereitstellung aufnehmen.Firebase-App mit Dienstkonto für Heroku bereitstellen (Umgebungsvariablen mit dotenv)
Ich kann die JSON-Datei des Dienstkontos nehmen, jede Eigenschaft zu einer Umgebungsvariablen machen, jede dieser Variablen zu Heroku hinzufügen und sie bereitstellen. Alles funktioniert gut (nachdem ich die neue Heroku-Domain auf meiner Firebase-Anwendung autorisiert habe), aber gibt es einen besseren Weg, dies zu tun? Das funktioniert, aber es war ein bisschen mühsam (Kopieren und Einfügen jeder Variablen und Verschieben derselben). Fehle ich einen einfacheren Weg, dies zu tun?
Hier ist die Änderung, die ich mache. Von dieser Linie, wo sie die Anmeldeinformationen aus einer Datei ziehen:
admin.initializeApp({
credential: admin.credential.cert('./path/firebase-service-account.json'),
databaseURL: "https://my-firebase-app.firebaseio.com"
});
Zu diesem Objekt, das in alle die gleichen Dinge von Umgebungsvariablen bringt:
admin.initializeApp({
credential: admin.credential.cert({
"type": process.env.FIREBASE_TYPE,
"project_id": process.env.FIREBASE_PROJECT_ID,
"private_key_id": process.env.FIREBASE_PRIVATE_KEY_ID,
"private_key": process.env.FIREBASE_PRIVATE_KEY,
"client_email": process.env.FIREBASE_CLIENT_EMAIL,
"client_id": process.env.FIREBASE_CLIENT_ID,
"auth_uri": process.env.FIREBASE_AUTH_URI,
"token_uri": process.env.FIREBASE_TOKEN_URI,
"auth_provider_x509_cert_url": process.env.FIREBASE_AUTH_PROVIDER_X509_CERT_URL,
"client_x509_cert_url": process.env.FIREBASE_CLIENT_X509_CERT_URL
}),
databaseURL: "https://my-firebase-app.firebaseio.com"
});
Ist dies die beste Praxis für die Bereitstellung von eine Firebase-Anwendung mit einem Dienstkonto für Heroku? Ich verwende das dotenv-Knotenmodul, um dies zu erreichen.
process.env.FIREBASE_CLIENT_x509_CERT_URL - Ich denke, das "X" sollte groß geschrieben werden – Casey
Yep! Ich habe den Schnitt gemacht. Schätze, dass du diesen Fang gemacht hast. Ich suche immer noch eine Anleitung zu Best Practice. –