funktioniert Ich habe die folgenden Anweisungen in DockerfileDocker für Windows ENV Variable in Dockerfile CMD nicht vorbei
ENV DB_CONN_STRING="Data Source=DbServer;Initial Catalog=Db;User ID=sa;[email protected]"
ENTRYPOINT []
CMD ["powershell", "c:\\RunAll.ps1 -NewConnString", "$DB_CONN_STRING"]
Wenn ich diesen Befehl ausführen
docker run --rm -d -e DB_CONN_STRING="Test" test
DB_CONN_STRING immer leer innen RunAll ist. PS1. Wie kann ich ENV an CMD übergeben?
Wenn ich CMD verwenden, ohne Parameter
CMD ["powershell", "c:\\RunAll.ps1"]
alle korrekt funktioniert.
RunAll.ps1 Code:
param(
[string]$NewConnString = "Data Source=DbServer;Initial Catalog=db;User ID=sa;[email protected]"
)
New-Item "C:\start_log.txt" -type file -force -value $NewConnString
.\ChangeConnString.ps1 -NewConnString $NewConnString
New-Item "C:\end_log.txt" -type file -force -value $NewConnString
# Run IIS container entry point
.\ServiceMonitor.exe w3svc
ich mehrere Ansätze, exec und Shell-Befehl Stile versucht, $ DB_CONN_STRING, $ {DB_CONN_STRING} und $ (DB_CONN_STRING) Stile.
Versuchte Vorschläge dieser Beiträge:
Use docker run command to pass arguments to CMD in Dockerfile
How do I use Docker environment variable in ENTRYPOINT array?
Nichts für mich funktioniert. Hier
ist ein Beispiel von Docker log:
[16:06:34.505][WindowsDockerDaemon][Info ] time="2017-03-27T16:06:34.505376100+02:00" level=debug msg="HCSShim::Container::CreateProcess id=0909937ce1130047b124acd7a5eb57664e05c6af7cbb446aa7c8015a44393232 config={\"ApplicationName\":\"\",\"CommandLine\":\"powershell c:\\\\RunAll.ps1 -NewConnString $DB_CONN_STRING\",\"User\":\"\",\"WorkingDirectory\":\"C:\\\\\",\"Environment\":{\"DB_CONN_STRING\":\"Test\"},\"EmulateConsole\":false,\"CreateStdInPipe\":true,\"CreateStdOutPipe\":true,\"CreateStdErrPipe\":true,\"ConsoleSize\":[0,0]}
Docker Version 17.03.0-ce, bauen 60ccb22
Per Docker Einleitungen, CMD Kommando-Shell und damit Umgebungsvariable nicht sein wird, nicht für die Extraktion zur Verfügung aufrufen. https://docs.docker.com/engine/reference/builder/#cmd Sie sollten wahrscheinlich erwägen, zu "ENTRYPOINT" anstatt –
zu wechseln. Ich habe es auch mit ENTRYPOINT versucht. Übrigens, damit begonnen: ENTRYPOINT ["Powershell", "c: \\ RunAll.ps1", "-NewConnString", "$ {DB_CONN_STRING}"]. Hatte das gleiche Ergebnis, wechselte dann zu CMD. auch wie dieser versucht: SHELL [ "Powershell"] ENTRYPOINT c: \ RunAll.ps1 -NewConnString CMD [ "$ DB_CONN_STRING"] – Vladimir
arbeitet Below für mich Docker ' # Flucht file =' von Microsoft/windowsservercore Kopie hello.ps1 c: \ ENTRYPOINT powershell.exe c: \ Hallo.ps1 ' hallo.ps1 ist 'Write-Output 'Umgebungsvariable ist" + (dir env:) ' Ich kann einen Lauf unten erstellen und sehe, dass die Umgebungsvariable vorhanden ist ' docker run --rm me/me -e "test = lala" ' –