powershell - Windows - Docker CMD 不执行

标签 powershell docker dockerfile docker-for-windows

在我的一生中,当我运行容器时,我似乎无法执行我的配置脚本。接下来,我需要将参数传递给 docker run 命令,以替换多个容器部署的“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’]

我也尝试过shell版本的CMD,如下

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

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

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

我只是不知道我在 CMD 方面缺少什么。

谢谢!

最佳答案

我能够让它按照我希望的方式工作。虽然我仍在研究配置脚本中的一些细节,但这就是我最终从 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

我希望这对我船上的其他人有帮助。感谢您的所有回答!

关于powershell - Windows - Docker CMD 不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46494250/

相关文章:

powershell - 如何在Powershell中使用DotNetZip仅压缩文件而不压缩完整路径层次结构?

linux - 删除容器内的权限

amazon-web-services - 在AWS中添加ECS实例 - 在哪里设置集群名称

InvokeWebrequest 的 Docker 构建失败

svn - 用于更新 SVN 文件夹的命令行

powershell - 如何使用powershell进行多线程复制?

mysql - 如何创建一个每天晚上备份mysql数据库的docker容器?

linux - Dockerfile 构建错误

docker - 覆盖基础 docker 镜像中的 ENV 变量

powershell - 在Powershell中使用前缀批量重命名多个文件