2017-03-16 9 views
0

Ich habe ein Docker Bild, das mit dem folgende CMD endet:Docker Windows-Container CMD - Befehl nicht ausgeführt

CMD ["powershell", "c:\install\settings\install.ps1"]

oder

CMD powershell c:\install\settings\install.ps1

Es wird nicht ausgeführt (oder vielleicht die Volumen ist noch nicht montiert).

Einstellungen werden in einem montierten Volumen platziert, und es wird gestartet mit:

docker run -d -p 80:80 --name openid --rm -v D:\settings\:c:\install\settings mydocker

Wenn ich den Befehl nach dem Start des Docker Bild laufen:

docker exec openid powershell c:\install\settings\install.ps1

Es läuft gut .

Gibt es eine Möglichkeit, dies zu tun?

Oder gibt es eine bessere Möglichkeit zum Bereitstellen einer IIS-Website mit Webdeploy und benutzerdefinierten SetParameters.xml?

+0

Haben Sie versucht, ENTRYPOINT statt CMD in Ihrer Docker Datei oder RUN zu verwenden, wie Sie versuchen, etwas zu installieren? Werfen Sie einen Blick auf http://goinbigdata.com/docker-run-vs-cmd-vs-entrypoint/, um die feinen Unterschiede zu sehen (falls erforderlich) – hecko84

+0

Ich benutzte DSC zum Vorbereiten von Containern und IIS in ihnen. Sich auf das Debuggen der DOCKERFILE-Ausführung zu verlassen, ist Albtraum. DSC bietet eine wiederholbare und importablere, überprüfbare Möglichkeit, mit Ihren Anwendungsbereitstellungen umzugehen. Details sind hier. https://github.com/artisticcheese/artisticcheesecontainer/wiki –

Antwort

0

Versuchen

# set up the shell 
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"] 
CMD ["powershell", "c:\\\install\\\settings\\\install.ps1"] 

In Windows, die Backslash der Separator in Dateipfaden ist, so haben wir es in Dockerfiles zu entkommen, sonst wird es als Linie Fortsetzung interpretiert werden. Dateipfade haben dann doppelte Schrägstriche \ und die einzelne Backslash wird für Zeilenfortsetzung verwendet

aus: https://blog.sixeyed.com/windows-dockerfiles-and-the-backtick-backslash-backlash/

+0

Hat nicht funktioniert :( –

+0

Ich habe Powershell-Setup-Zeile hinzugefügt, können Sie überprüfen, ob das funktioniert? Sonst wäre Ihre vollständige Dockerfile nützlich. – ptrk

+0

Nun, kein Glück gibt es auch nicht ... Vollständige Datei (mit kleinen Änderungen an den Pfaden sind unten veröffentlicht. –

0

dies versuchen, könnte ein Problem mit dem Schrägstrich sein.

CMD ["powershell", "c:/install/settings/install.ps1"]

+0

Hat nicht funktioniert :( –

+0

Haben Sie mehrere Befehle in Ihrer Dockerfile ausgeführt? Können Sie den Inhalt Ihrer Dockerfile einfügen (wenn nicht vertraulich)? – ProgrammerBoy

+0

'# Get windows' ' von Microsoft/aspnet' '# Install Web deploy' ' COPY D: /WebDeploy_amd64_en-US.msi/install/WebDeploy_amd64_en-US.msi' 'WORKDIR/install' 'RUN Power Start-Prozess msiexec.exe -ArgumentList '/ic:\install\WebDeploy_amd64_en-US.msi/Qn' -Wait' ' COPY D:/WebDeploy/*/installieren/'' CMD [ "Power "," c: \ install \ settings \ install.ps1 "]] –

0

Sie können PS Skript übergeben Befehl, da dies Andockfenster:

CMD ["powershell .\\myscript.ps1"]