Windows - Docker CMD 不执行
Windows - Docker CMD does not execute
在我的生活中,当我 运行 我的容器时,我似乎无法执行我的供应脚本。今后,我需要将参数传递给 docker 运行 命令以替换 '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,我只是不知所措。
谢谢!
你可以试一试。 ARG 将变量传递给 shell 可通过 PS $env: variable.
访问
ARG parmOne=Hiiii
ARG parmTwo=123
# Run a native PowerShell session and pass the script as a command.
RUN ["powershell", "-NoProfile", "-Command", "C:\Container\Start-Admin.Docker.Cmd.ps1 -Parm1 $env:parmOne -parm2 $env:parmTwo"]
我能够让它按照我希望的方式工作。虽然我仍在处理配置脚本中的一些细节,但这就是我最终从 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 运行 命令如下所示
docker run -d -p 8001:80 -e "myParm1=byeeeee" --name=container image:v1
我希望这对我船上的其他人有所帮助。感谢大家的回答!
在我的生活中,当我 运行 我的容器时,我似乎无法执行我的供应脚本。今后,我需要将参数传递给 docker 运行 命令以替换 '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,我只是不知所措。
谢谢!
你可以试一试。 ARG 将变量传递给 shell 可通过 PS $env: variable.
访问ARG parmOne=Hiiii
ARG parmTwo=123
# Run a native PowerShell session and pass the script as a command.
RUN ["powershell", "-NoProfile", "-Command", "C:\Container\Start-Admin.Docker.Cmd.ps1 -Parm1 $env:parmOne -parm2 $env:parmTwo"]
我能够让它按照我希望的方式工作。虽然我仍在处理配置脚本中的一些细节,但这就是我最终从 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 运行 命令如下所示
docker run -d -p 8001:80 -e "myParm1=byeeeee" --name=container image:v1
我希望这对我船上的其他人有所帮助。感谢大家的回答!