docker - Dockerfile附加PATH环境变量不起作用?

标签 docker dockerfile

我认为这很简单,并且确实可以找到很多答案,但不确定为什么它对我不起作用。

首先,没有设置任何ENV PATH =,我可以检查PATH的默认值为

C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Users\ContainerAdministrator\AppData\Local\Microsoft\WindowsApps



我仅通过运行图像并使用CMD echo %PATH%进行检查。

但是,使用以下设置,所有默认值都消失了,不去理会新值(看起来真的像它无法获得默认值,或者只是该值为空):
ENV PATH = "C:\Program Files\dotnet\:${PATH}"

这是各种尝试(无效):
#this even tries removing spaces around the = 
#like some ones warned that could break the PATH
ENV PATH="C:\Program Files\dotnet:${PATH}"
ENV PATH = "C:\Program Files\dotnet\:$PATH"
ENV PATH = "C:\Program Files\dotnet:${PATH}"
ENV PATH = "C:\Program Files\dotnet:$PATH"   
ENV PATH = "C:\Program Files\dotnet;${PATH}"
ENV PATH = "C:\Program Files\dotnet;$PATH"
ENV PATH = "C:\Program Files\dotnet;$env:PATH"

使用上述设置之一,PATH(在正在运行的容器上执行cmd时由echo %PATH%检查)变为C:\Program Files\dotnet(在某些情况下可能还会附加一些字符)。

真的,我想为这样一个简单的问题撞墙,却花了我几个小时。真?

这是完整的dockerfile:
# escape=`

FROM microsoft/dotnet:2.1-sdk-nanoserver-1803 AS dotnet

FROM microsoft/dotnet-framework:4.7.2-runtime-windowsservercore-1803

ENV DOTNET_PATH="C:\Program Files\dotnet" 
COPY --from=dotnet ${DOTNET_PATH} ${DOTNET_PATH}

ENV PATH = "C:\Program Files\dotnet\:${PATH}"

ENV ASPNETCORE_URLS=http://+:80 `

DOTNET_RUNNING_IN_CONTAINERS=true `

DOTNET_SKIP_FIRST_TIME_EXPERIENCE="true"

我希望这里的人可以指出问题所在。谢谢!

最佳答案

RUN setx /M PATH "C:\Program Files\dotnet;%PATH%"

关于docker - Dockerfile附加PATH环境变量不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55284481/

相关文章:

php - 路径在容器内不可写

python - 如何删除所有本地 Docker 镜像?

docker - 如何在Dockerfile中编写多行命令

docker - 如何获取要从 Elastic Beanstalk 上的 Dockerfile.aws.json 运行的命令?

java - Docker 中的简单 Java 应用程序 - 无法找到或加载主类

docker - 从普罗米修斯那里抓取traefik指标

angular - 将docker镜像部署到GAE以获得 Angular

ruby - 如何将jekyll安装到Docker镜像?

mongodb - 为 mongo db 执行 shell 脚本时出现意外标记 "("附近的语法错误

docker - 如何构建与基础镜像具有相同标签的Docker镜像?