2017-03-11 4 views
2

verwenden Wenn ich Docker mit asp.net Core für die Entwicklung verwenden, sollte ich Benutzergeheimnisse oder Umgebungsvariablen verwenden? Ich verwende die Standard-Docker-Datei, die Visual Studio 2017 beim Hinzufügen eines Projekts erstellt, das Microsoft/aspnetcore: 1.1 verwendet, und ich glaube, es ist ein Linux-Image.Sollte ich Benutzergeheimnisse oder Umgebungsvariablen mit Docker

Wie lege ich die Benutzergeheimnisse/Umgebungsvariablen in Docker so fest, dass sie beim Start festgelegt werden, aber nicht im Quellcode enthalten sind?

Antwort

1

Umwelt vars sind besser - https://12factor.net/config

Wenn Sie Docker mit docker run Verwendung -e oder --env-file Option ausführen: https://docs.docker.com/engine/reference/run/#env-environment-variables

Wenn Sie Docker mit docker-compose Verwendung environment oder env_file Schlüssel auszuführen: https://docs.docker.com/compose/environment-variables/

+0

Dies ist, was ich gesucht habe. Ich verwende eine .env-Datei wie hier https://docs.docker.com/compose/environment-variables/#the-env-file beschrieben und füge diese zu .gitignore hinzu. Vielen Dank. –

2

Für den Produktionszweck müssen Sie Umgebungsvariablen verwenden, nicht Use-Secrets. Secrets existiert NUR zur sicheren Lagerung während der Entwicklung durch sensible Daten von in Code verhindern helfen, wobei die Speicherung/kontrollierte in der Quellcodeverwaltung:

The Secret-Manager-Tool die gespeicherten Geheimnisse nicht verschlüsselt werden und nicht als vertrauenswürdig behandelt werden soll Geschäft. Es ist nur für Entwicklungszwecke. Die Schlüssel und Werte werden in einer JSON-Konfigurationsdatei im Benutzerprofilverzeichnis gespeichert.


Als Alternative zur Umgebungsvariablen können Sie prüfen "externe" Schlüssel-Wert-Speicher, wie Consul, Vault usw.


In Bezug auf die Umgebungsvariablen in Docker mit nahe stehenden SO hat bereits Fragen. Siehe How to pass environment variables to docker containers? als Beispiel.

+0

I weiß, wie man Umgebungsvariablen mit dem docker-Befehl übergibt, aber wie mache ich das, wenn ich in Visual St Udio und startet die Docker Bilder, übergibt es die Umgebungsvariablen? –

+0

Spät zur Party. Wenn Sie VS ausführen und Umgebungsvariablen an Ihren Container übergeben müssen: – Jake

0

Anstatt Benutzergeheimnisse oder Umgebungsvariablen zu verwenden, habe ich beschlossen, eine weitere Appsettings-Datei namens appsettings.secrets.json hinzuzufügen. Und dann im Konstruktor fügen Sie die Datei wie auch die anderen appsettings Dateien:

var builder = new ConfigurationBuilder() 
      .SetBasePath(env.ContentRootPath) 
      .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 
      .AddJsonFile("appsettings.secrets.json", optional: true, reloadOnChange: true) 
      .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) 
      .AddEnvironmentVariables(); 

Nur sicher sein, die appsettings.secrets.json auf die .gitignore Datei hinzufügen, damit es nicht zu Quellcodeverwaltung hinzugefügt wird. Benutzergeheimnisse und Umgebungsvariablen können weiterhin verwendet werden.

Verwandte Themen