Ist es möglich, eine Docker-ENV-Variable auf das Ergebnis eines Befehls zu setzen? Like:Dockerfile - Setzen Sie ENV auf das Ergebnis des Befehls
ENV MY_VAR whoami
ich will MY_VAR den Wert „root“ oder was auch immer whoami kehrt
Ist es möglich, eine Docker-ENV-Variable auf das Ergebnis eines Befehls zu setzen? Like:Dockerfile - Setzen Sie ENV auf das Ergebnis des Befehls
ENV MY_VAR whoami
ich will MY_VAR den Wert „root“ oder was auch immer whoami kehrt
Ich hatte dasselbe Problem zu erhalten und fand Weg Umgebungsvariablen als Ergebnis der Funktion zu setzen, indem in dockerfile RUN-Befehl.
Zum Beispiel muss ich SECRET_KEY_BASE für Rails-Anwendung ohne Änderung nur einmal einzustellen, wie wäre, wenn ich laufen:
docker run -e SECRET_KEY_BASE="$(openssl rand -hex 64)"
Stattdessen es ich schreibe String Dockerfile wie:
RUN bash -l -c 'echo export SECRET_KEY_BASE="$(openssl rand -hex 64)" >> /etc/bash.bashrc'
und mein env Variable verfügbar von root, auch nach Bash-Login. oder
RUN /bin/bash -l -c 'echo export SECRET_KEY_BASE="$(openssl rand -hex 64)" > /etc/profile.d/docker_init.sh'
werden dann befiehlt sie verfügbar Variable in CMD und ENTRYPOINT
Docker Cache es als Schicht und nur ändern, wenn Sie, bevor es einige Saiten ändern.
Sie können auch versuchen different ways Umgebungsvariable zu setzen.
Als Ergänzung zu DarkSideF Antwort.
Sie sollten beachten, dass jede Zeile/jeder Befehl in Dockerfile in einem anderen Container ausgeführt wird.
Sie können etwas tun:
RUN export bleah=$(hostname -f);echo $bleah;
Dieses in einem einzigen Behälter ausgeführt wird.
Zu diesem Zeitpunkt kann ein Befehlsergebnis mit RUN export
verwendet werden, es kann jedoch keine Variable ENV
zugewiesen werden.
Bekanntes Problem: https://github.com/docker/docker/issues/29110
Siehe https://stackoverflow.com/questions/33201271/parse-a-variable-with-the-result-of-a-command-in-dockerfile – akhmed