ist jetzt verfügbar! Lesen Sie über die neuen Funktionen und Fehlerbehebungen vom November.

Umgebungsvariablen

Sie können Umgebungsvariablen in Ihrem Container festlegen, ohne das Container-Image zu ändern, indem Sie eine der folgenden Optionen verwenden.

Sie sollten in den Einstellungen überprüfen, ob Terminal > Integriert: Umgebungsvariablen erben aktiviert ist, oder die von Ihnen festgelegten Variablen werden möglicherweise nicht im integrierten Terminal angezeigt. Diese Einstellung ist standardmäßig aktiviert.

Option 1: Einzelne Variablen hinzufügen

Abhängig davon, was Sie in devcontainer.json referenzieren

  • Dockerfile oder Image: Fügen Sie die Eigenschaft containerEnv zu devcontainer.json hinzu, um Variablen festzulegen, die für den gesamten Container gelten sollen, oder remoteEnv, um Variablen für VS Code und zugehörige Subprozesse (Terminals, Tasks, Debugging usw.) festzulegen.

    "containerEnv": {
        "MY_CONTAINER_VAR": "some-value-here",
        "MY_CONTAINER_VAR2": "${localEnv:SOME_LOCAL_VAR}"
    },
    "remoteEnv": {
        "PATH": "${containerEnv:PATH}:/some/other/path",
        "MY_REMOTE_VARIABLE": "some-other-value-here",
        "MY_REMOTE_VARIABLE2": "${localEnv:SOME_LOCAL_VAR}"
    }
    

    Wie dieses Beispiel zeigt, kann containerEnv lokale Variablen referenzieren, und remoteEnv kann sowohl lokale als auch vorhandene Container-Variablen referenzieren.

Video: PATH in einem Dev-Container ändern



  • Docker Compose: Da Docker Compose integrierte Unterstützung für die Aktualisierung von Container-weiten Variablen bietet, wird in devcontainer.json nur remoteEnv unterstützt.

    "remoteEnv": {
        "PATH": "${containerEnv:PATH}:/some/other/path",
        "MY_REMOTE_VARIABLE": "some-other-value-here",
        "MY_REMOTE_VARIABLE2": "${localEnv:SOME_LOCAL_VAR}"
    }
    

    Wie dieses Beispiel zeigt, kann remoteEnv sowohl lokale als auch vorhandene Container-Variablen referenzieren.

    Um Variablen zu aktualisieren, die für den gesamten Container gelten, aktualisieren (oder erweitern) Sie Ihre docker-compose.yml mit dem Folgenden für den entsprechenden Dienst

    version: '3'
    services:
      your-service-name-here:
        environment:
          - YOUR_ENV_VAR_NAME=your-value-goes-here
          - ANOTHER_VAR=another-value
         # ...
    

Wenn Sie den Container bereits erstellt und eine Verbindung dazu hergestellt haben, führen Sie Dev Containers: Container neu erstellen aus der Befehlspalette (F1) aus, um die Änderung zu übernehmen. Andernfalls führen Sie Dev Containers: Ordner im Container öffnen... aus, um eine Verbindung zum Container herzustellen.

Option 2: Eine .env-Datei verwenden

Wenn Sie eine große Anzahl von Umgebungsvariablen festlegen müssen, können Sie stattdessen eine .env-Datei verwenden.

Erstellen Sie zuerst eine Umgebungsvariablendatei irgendwo in Ihrem Quellcodebaum. Betrachten Sie diese .devcontainer/devcontainer.env-Datei

YOUR_ENV_VAR_NAME=your-value-goes-here
ANOTHER_ENV_VAR_NAME=your-value-goes-here

Als Nächstes, abhängig davon, was Sie in devcontainer.json referenzieren

  • Dockerfile oder Image: Bearbeiten Sie devcontainer.json und fügen Sie einen Pfad zu devcontainer.env hinzu.

    "runArgs": ["--env-file",".devcontainer/devcontainer.env"]
    
  • Docker Compose: Bearbeiten Sie docker-compose.yml und fügen Sie einen Pfad zur devcontainer.env-Datei relativ zur Docker Compose-Datei hinzu.

    version: '3'
    services:
      your-service-name-here:
        env_file: devcontainer.env
        # ...
    

docker compose übernimmt automatisch eine Datei namens .env im Ordner, der die docker-compose.yml enthält, aber Sie können auch eine an einem anderen Ort erstellen.

Wenn Sie den Container bereits erstellt und eine Verbindung dazu hergestellt haben, führen Sie Dev Containers: Container neu erstellen aus der Befehlspalette (F1) aus, um die Änderung zu übernehmen. Andernfalls führen Sie Dev Containers: Ordner im Container öffnen... aus, um eine Verbindung zum Container herzustellen.

Video: Variablen aus einer .env-Datei laden

© . This site is unofficial and not affiliated with Microsoft.