gpt4 book ai didi

powershell - 如何将 PowerShell 脚本指定为 Docker 容器入口点?

转载 作者:行者123 更新时间:2023-12-05 00:48:19 25 4
gpt4 key购买 nike

我需要将 [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! .

根据我的观察,我有几个问题:
  • 基于 Windows 的 Docker 容器的默认 shell 是什么?有什么办法可以将它设置为PowerShell,这样我就不必将“powershell”指定为ENTRYPOINT的第一个元素JSON 数组?我应该使用 SHELL Dockerfile 中的命令?
  • 创建和运行容器大约需要 3-4 秒,这有点可以理解,但是在 PS1 脚本完成后,容器退出并返回到命令提示符需要将近有问题的 10 秒。造成这种延迟的原因可能是什么?
  • 最佳答案

    是的,您可以在 DOCKERFILE 顶部指定 powershell 作为默认 shell,如下所示SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'Continue'; $verbosePreference='Continue';"]
    我不确定您是否可以做任何事情来降低 VM 的速度

    关于powershell - 如何将 PowerShell 脚本指定为 Docker 容器入口点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49851347/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com