|
| 1 | +# Verwenden von Umgebungsvariablen in Dev Containern (`.devcontainer.env`) |
| 2 | + |
| 3 | +Dieses Dokument beschreibt die Verwendung einer dedizierten Datei zur Bereitstellung von Umgebungsvariablen für Ihren Dev Container, um Geheimnisse und benutzerspezifische Einstellungen von der Versionskontrolle fernzuhalten. |
| 4 | + |
| 5 | +## 1. Zweck |
| 6 | + |
| 7 | +Die Datei dient dazu, **Umgebungsvariablen** (z. B. API-Tokens, geheime Schlüssel, benutzerspezifische Pfade oder Einstellungen) in den laufenden Development Container einzuspeisen. Dies ist ein wichtiger Mechanismus, um zu verhindern, dass sensible oder benutzerspezifische Daten in der Konfigurationsdatei [`devcontainer.json`](.devcontainer/devcontainer.json) hartcodiert oder versehentlich in das Git-Repository committet werden. |
| 8 | + |
| 9 | +## 2. Erstellung und Speicherort |
| 10 | + |
| 11 | +1. **Speicherort:** Erstellen Sie die Datei manuell. Es wird empfohlen, sie im Ordner [`./.devcontainer`](.devcontainer/) zu speichern, z.B. als [`./.devcontainer/.devcontainer.env`](.devcontainer/.devcontainer.env). |
| 12 | +2. **Versionskontrolle:** **Wichtig:** Fügen Sie den Dateinamen (z.B. `.devcontainer/.devcontainer.env`) sofort der Datei [`./.gitignore`](.gitignore) hinzu, um zu verhindern, dass die Umgebungsvariablen versehentlich in das Git-Repository committet werden. |
| 13 | + |
| 14 | +## 3. Format |
| 15 | + |
| 16 | +Die Datei ist eine einfache Textdatei und folgt den Standard-`.env`-Dateikonventionen: |
| 17 | + |
| 18 | +* Jede Zeile enthält ein Schlüssel-Wert-Paar. |
| 19 | +* Das Format ist `SCHLÜSSEL=WERT`. |
| 20 | +* Kommentare beginnen mit `#`. |
| 21 | + |
| 22 | +``` |
| 23 | +# Beispiel für .devcontainer.env |
| 24 | +API_KEY=mein_geheimer_schluessel_12345 |
| 25 | +USER_EMAIL=ich@beispiel.de |
| 26 | +LOG_LEVEL=DEBUG |
| 27 | +``` |
| 28 | + |
| 29 | +## 4. Verwendung mit Dockerfile/Image-basierten Dev Containern |
| 30 | + |
| 31 | +Wenn Sie eine Konfiguration verwenden, die direkt auf einem Dockerfile oder einem Docker-Image basiert (erkennbar an der Verwendung von `"dockerfile"` oder `"image"` in [`devcontainer.json`](.devcontainer/devcontainer.json)), verwenden Sie das Docker CLI-Argument `--env-file` in der Eigenschaft `"runArgs"`: |
| 32 | + |
| 33 | +```json |
| 34 | +// .devcontainer/devcontainer.json |
| 35 | +{ |
| 36 | + // ... |
| 37 | + "runArgs": [ |
| 38 | + "--env-file", |
| 39 | + "./.devcontainer.env" // Pfad relativ zum .devcontainer-Ordner |
| 40 | + ] |
| 41 | + // ... |
| 42 | +} |
| 43 | +``` |
| 44 | + |
| 45 | +## 5. Verwendung mit Docker Compose-basierten Dev Containern |
| 46 | + |
| 47 | +Wenn Sie eine Konfiguration verwenden, die auf Docker Compose basiert (erkennbar an der Verwendung von `"dockerComposeFile"` in [`devcontainer.json`](.devcontainer/devcontainer.json)), fügen Sie den Schlüssel `env_file` zum entsprechenden Service in Ihrer [`docker-compose.yml`](docker-compose.yml) hinzu: |
| 48 | + |
| 49 | +```yaml |
| 50 | +# docker-compose.yml |
| 51 | +version: '3.8' |
| 52 | +services: |
| 53 | + app: |
| 54 | + build: . |
| 55 | + # ... andere Konfigurationen ... |
| 56 | + env_file: |
| 57 | + - ./.devcontainer/.devcontainer.env # Pfad relativ zur docker-compose.yml |
| 58 | +``` |
| 59 | +
|
| 60 | +## 6. Best Practice: Beispiel-Datei |
| 61 | +
|
| 62 | +Um anderen Entwicklern mitzuteilen, welche Umgebungsvariablen benötigt werden, existiert eine **Beispiel-Datei**: |
| 63 | +
|
| 64 | +* **Name:** [`./.devcontainer/.devcontainer.env.sample`](.devcontainer/.devcontainer.env.sample) (oder ähnlich). |
| 65 | +* **Inhalt:** Führen Sie die benötigten Variablen mit leeren oder Platzhalter-Werten auf. |
| 66 | + |
| 67 | +``` |
| 68 | +# .devcontainer/.devcontainer.env.sample |
| 69 | +# Kopieren Sie diese Datei nach .devcontainer/.devcontainer.env und füllen Sie die Werte aus. |
| 70 | + |
| 71 | +# MQTT Broker Konfiguration |
| 72 | +MQTT_HOST=localhost |
| 73 | +MQTT_PORT=1883 |
| 74 | +MQTT_USERNAME= |
| 75 | +MQTT_PASSWORD= |
| 76 | +MQTT_TOPIC=signalduino/messages |
| 77 | + |
| 78 | +# Signalduino Verbindungseinstellungen |
| 79 | +SIGNALDUINO_SERIAL_PORT=/dev/ttyUSB0 |
| 80 | +SIGNALDUINO_BAUD=57600 |
| 81 | +# SIGNALDUINO_TCP_HOST=192.168.1.10 |
| 82 | +# SIGNALDUINO_TCP_PORT=23 |
| 83 | + |
| 84 | +# Logging |
| 85 | +LOG_LEVEL=INFO |
0 commit comments