Tri*_*nko 5 windows environment-variables args docker
我找不到任何有效的语法。即使 stackoverflow 上建议的解决方案也不起作用。运行它们会在预期值处显示空白输出。
ENV 变量不会保留在构建的映像中(即,从正在运行的容器中的命令行运行“set”显示该变量未设置)。
ARG 和 ENV 值似乎都无法在发送到 powershell 的 RUN 命令中访问。
“testdockerfile”的内容:
ARG TEST_ARG=value_to_insert_in_debug_txt_file
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2016
ENV MyEnvVar ${TEST_ARG}
ENV MyEnvVar2 $TEST_ARG
ENV MyEnvVar3 TEST_ARG
SHELL ["powershell","-Command"]
RUN "\"baseline\" | Out-File c:\debug.txt"
RUN "\"%TEST_ARG%\" | Out-File c:\debug1.txt"
RUN "\"$TEST_ARG\" | Out-File c:\debug2.txt"
RUN "\"${TEST_ARG}\" | Out-File c:\debug3.txt"
RUN "\"${Env:TEST_ARG}\" | Out-File c:\debug4.txt"
RUN "\"%MyEnvVar%\" | Out-File c:\debug5.txt"
RUN "\"$MyEnvVar\" | Out-File c:\debug6.txt"
RUN "\"${MyEnvVar}\" | Out-File c:\debug7.txt"
RUN "\"${Env:MyEnvVar}\" | Out-File c:\debug8.txt"
RUN "\"$Env:MyEnvVar\" | Out-File c:\debug9.txt"
RUN "\"%MyEnvVar2%\" | Out-File c:\debug10.txt"
RUN "\"$MyEnvVar2\" | Out-File c:\debug11.txt"
RUN "\"${MyEnvVar2}\" | Out-File c:\debug12.txt"
RUN "\"${Env:MyEnvVar2}\" | Out-File c:\debug13.txt"
RUN "\"$Env:MyEnvVar2\" | Out-File c:\debug14.txt"
RUN "\"%MyEnvVar3%\" | Out-File c:\debug15.txt"
RUN "\"$MyEnvVar3\" | Out-File c:\debug16.txt"
RUN "\"${MyEnvVar3}\" | Out-File c:\debug17.txt"
RUN "\"${Env:MyEnvVar3}\" | Out-File c:\debug18.txt"
RUN "\"$Env:MyEnvVar3\" | Out-File c:\debug19.txt"
Run Code Online (Sandbox Code Playgroud)
运行以下docker命令
docker build -f testdockerfile --no-cache -t test-app --build-arg "TEST_ARG=value_to_insert_in_debug_txt_file"
Run Code Online (Sandbox Code Playgroud)
这些文件中的每一个都已成功创建,但是(除了基线之外)它们要么是空的,要么包含提供的文字之一:
debug.exe contains "baseline" (expected)
debug1.txt contains "%TEST_ARG%"
debug10.txt contains "%MyEnvVar2%"
debug15.txt contains "%MyEnvVar3%"
debug18.txt contains "TEST_ARG"
debug19.txt contains "TEST_ARG"
debug5.txt contains "%MyEnvVar%"
all other files exist but are empty
Run Code Online (Sandbox Code Playgroud)
似乎不可能将任何提供的 ARG 值放入 dockerfile 中的 powershell 脚本中。
出现在 FROM 指令之前的 ARG 值在 FROM 指令之后不可用。
ARG 值必须在 FROM 指令之后重新声明,以使其在 FROM 指令之后可用。
ARG TEST_ARG=value_to_insert_in_debug_txt_file
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2016
ARG TEST_ARG=value_to_insert_in_debug_txt_file
ENV MyEnvVar ${TEST_ARG}
ENV MyEnvVar2 $TEST_ARG
ENV MyEnvVar3 TEST_ARG
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1380 次 |
| 最近记录: |