Ich möchte Shell-Erweiterung mit Standardwerten in YAML-Datei unter Beibehaltung seiner Struktur und führende Leerzeichen, um es nutzbar zu halten.Shell-Variablen-Erweiterung in Textdatei, die Whitespace (z. B. docker-compose.yml in Rancher)
Zum Beispiel:
version: 2
services:
postgres:
image: ${POSTGRESQL_IMAGE:-my-private-registry/postgres}:${POSTGRESQL_BUILD:-9.6}"
labels:
io.rancher.scheduler.affinity:host_label: myproject=true
myapp:
image: ${APP_IMAGE:-my-private-registry/myapp}:${APP_BUILD:-latest}
depends_on:
- postgres
...
Ausgabe sollte wie:
version: 2
services:
postgres:
image: my-private-registry/postgres:9.6
labels:
io.rancher.scheduler.affinity:host_label: myproject=true
myapp:
image: my-private-registry/myapp:latest
depends_on:
- postgres
...
Ich mag würde renderes Docker-Compose-Datei zu erhalten, so kann ich es Rancher Pass, unterstützt nur version 2
ohne Schale Erweiterung.
Was ist die beste und zuverlässige Lösung dafür?
Ich habe versucht:
envsubst
aber es kann nur primitive substitiutions- Shell
eval
durchführen, aber es entfernt führende Leerzeichen und korrumpiert Datei
Vielen Dank für die Meinung. Ich habe darüber nachgedacht, aber es sieht für mich zu komplex aus, wenn Sie eine Transformation von ihnen benötigen, zB Standardwerte. Auf diese Weise möchte ich die Datei direkt auf localhost mit 'docker-compose ...' und remote mit 'make ...' und anderen Variablen verwenden können. –