如何在DockerFile中运行Powershell脚本?

11

我在 Dockerfile 中尝试了以下命令,但它没有运行脚本。还有其他的命令可以在 Dockerfile 中运行 PowerShell 脚本吗?

ADD Windowss.ps1 .

CMD powershell .\Windowss.ps1;

5个回答

46

要运行PS1脚本文件,你可以像这样做:

SHELL ["cmd", "/S", "/C"]    
RUN powershell -noexit "& ""C:\Chocolatey\lib\chocolatey.0.10.8\tools\chocolateyInstall.ps1"""

你还可以这样做:

SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
WORKDIR C:\
RUN .\install_pfx.ps1

@shad - 请接受这个答案 - 这是你提出的关于如何从你的Docker文件中运行PowerShell脚本的问题的答案。它可能没有解决你在容器中运行服务的问题,但那不是你的问题!谢谢! - Ian Robertson

8

2
我该如何通过docker Run来实现这个? - John Demetriou

1
我曾经遇到类似的问题,通过使用shell指令解决了它。
FROM mcr.microsoft.com/windows/servercore:20H2 AS PS
SHELL ["powershell"]
RUN Write-Host "Hello from docker! Today is $(Get-Date)"

编辑:刚注意到上面的答案比我的命令好一点。给它点赞!https://dev59.com/LFYN5IYBdhLWcg3wopew#48804143


1

是的,还有另一条命令。根据文档ENTRYPOINT ["executable", "param1", "param2"] 是一个命令,它将使容器在启动时运行可执行文件。它可以与CMD一起使用。


我不明白。你想要将Windows进行Docker化吗? - samthegolden
尽量清晰明了,你的第一个问题也不够清晰。请参考https://www.wikihow.com/Ask-a-Question-on-Stack-Overflow。 - samthegolden
我只是想问一下,我们能否创建C# Windows服务的Docker镜像? - shad
@ravi 请尝试做一些研究:https://forums.docker.com/t/dockerizing-a-windows-service-net/18415 - samthegolden

0
我试过这个,它起作用了。
FROM mcr.microsoft.com/powershell 
WORKDIR /app
COPY . /app
CMD ["pwsh", "-File", "<your_powershellscript>"]

这里我们需要提到可执行文件为pwsh而不是powershell,附上Github代码链接供您参考:此处(第39行) 此处(第56行)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接