首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将PowerShell脚本指定为Docker容器入口点?

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

Stack Overflow用户
提问于 2018-04-16 07:04:49
回答 1查看 19.8K关注 0票数 7

我需要将Windows容器作为可执行文件运行,运行一个相当复杂的PowerShell脚本(调用.NET和Java应用程序)并退出。码头文件建议为此目的使用ENTRYPOINT。因此,我继续创建了一个Dockerfile,其内容如下:

代码语言:javascript
复制
FROM microsoft/dotnet-framework
COPY run.ps1 /
ENTRYPOINT [ "powershell.exe", "C:\\run.ps1" ]

run.ps1的内容(简化了这个问题):

代码语言:javascript
复制
gci
write-host "looks like everything is good!"

然后,我运行以下命令:

代码语言:javascript
复制
# 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!

根据我的观察,我有几个问题:

  1. 基于Windows的Docker容器的默认外壳是什么?是否有任何方法将其设置为PowerShell,因此我不必将"powershell“指定为ENTRYPOINT JSON数组的第一个元素?我应该在Dockerfile中使用SHELL命令吗?
  2. 创建和运行容器大约需要3-4秒,这是可以理解的,但是在PS1脚本完成后,容器退出并返回到命令提示符需要10秒的时间。造成这一延误的原因可能是什么?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-16 11:52:32

是的,您可以将powershell指定为默认shell,如下面的DOCKERFILE顶部所示

代码语言:javascript
复制
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'Continue'; $verbosePreference='Continue';"]

我不确定你能做些什么来减少你的虚拟机

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49851347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档