我需要将[Windows] Docker容器作为可执行文件运行,运行相当复杂的PowerShell脚本(调用Java和.NET应用程序)并退出。 Docker documentation建议为此使用ENTRYPOINT
。因此,我继续创建了一个包含以下内容的Dockerfile:
FROM microsoft/dotnet-framework
COPY run.ps1 /
ENTRYPOINT [ "powershell.exe", "C:\\run.ps1" ]
run.ps1
的内容(此问题的 super 简化):gci
write-host "looks like everything is good!"
然后,我运行了以下命令:
# Build the Docker image
docker build --rm -t testdockerps .
# Create/run container using above image
docker run -it testdockerps
容器成功运行,显示
C:\
的内容,后跟消息-looks like everything is good!
。根据我的观察,我有几个问题:
ENTRYPOINT
JSON数组的第一个元素?我应该在Dockerfile中使用SHELL
命令吗? 最佳答案
是的,您可以将powershell指定为默认 shell ,例如下面的DOCKERFILE顶部SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'Continue'; $verbosePreference='Continue';"]
我不确定您是否可以采取任何措施减少虚拟机的运行时间
关于powershell - 如何将PowerShell脚本指定为Docker容器入口点?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49851347/