Windows – Docker CMD不执行

对于我的生活,我似乎无法让我的供应脚本执行时,我运行我的容器。 在路上,我需要将parameter passing给docker run命令来replace多个容器部署中的“hiiii”和“123”。

这是我的docker文件

FROM microsoft/aspnet:3.5-windowsservercore-10.0.14393.1198 SHELL [“powershell”, “-Command”, “$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';”] COPY *.ps1 /Container/ COPY [“wwwroot”, “/inetpub/wwwroot”] COPY [“Admin”, “/Program Files (x86)Admin”] COPY [“Admin/web.config”, “/Program Files (x86)/Admin/web_default.config”] #ENTRYPOINT [“powershell”] CMD [“powershell.exe”, -NoProfile, -File, C:\Container\Start-Admin.Docker.Cmd.ps1 -Parm1 'Hiiii' -parm2 '123'] 

我也尝试了CMD的shell版本,如下所示

 CMD powershell -NoProfile -File C:\Container\Start-Admin.Docker.Cmd.ps1 -Parm1 'Hiiii' -Parm2 '123' 

这是我正在使用的命令。

 docker image build -t image:v1:v1 . docker run --name container -p 8001:80 -d image:v1 

在创build并运行容器之后,我发现脚本没有运行或失败。 但是,我可以执行到容器上的PowerShell,并手动运行脚本,它工作正常,我看到我需要的所有更改。

 docker exec --interactive --tty container powershell C:\Container\Start-Admin.Docker.Cmd.ps1 -Parm1 'Hiiii' -Parm2 '123' 

我对于我在CMD方面所缺less的东西感到茫然。

谢谢!

你可以试试这个。 ARG将variables传递给可通过PS $ env:variable访问的shell。

 ARG parmOne=Hiiii ARG parmTwo=123 # Run a native PowerShell session and pass the script as a command. RUN ["powershell", "-NoProfile", "-Command", "C:\\Container\\Start-Admin.Docker.Cmd.ps1 -Parm1 $env:parmOne -parm2 $env:parmTwo"] 

我能够按照我所希望的方式工作。 虽然我仍然正在编写configuration脚本中的一些细节,但这是我最终从Docker端获得的结果。

 FROM microsoft/aspnet:3.5-windowsservercore-10.0.14393.1198 #The shell line needs to be removed and any RUN commands need to be immediately proceeded by 'powershell' eg RUN powershell ping google.com #SHELL [“powershell”, “-Command”, “$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';”] COPY *.ps1 /Container/ COPY [“wwwroot”, “/inetpub/wwwroot”] COPY [“Admin”, “/Program Files (x86)Admin”] COPY [“Admin/web.config”, “/Program Files (x86)/Admin/web_default.config”] ENV myParm1 Hiiii ENV myParm2 123 ENTRYPOINT ["powershell", "-NoProfile", "-Command", "C:\\Container\\Start-Admin.Docker.Cmd.ps1"] CMD ["-parm1 $Env:myParm1 -parm2 $Env:myParm2"] 

docker run命令看起来像这样

 docker run -d -p 8001:80 -e "myParm1=byeeeee" --name=container image:v1 

我希望这有助于其他人在我的船上。 感谢所有的答案!