我已经看过如何在Dockerfile中发表评论?它没有回答这个问题.
该泊坞窗文档关于在Dockerfile哈希的位置是一把双刃剑:
Docker将以#开头的行视为注释
目前尚不清楚是否允许哈希之前的空格.我的测试似乎表明它是允许的,但我正在寻找一个确定的答案.
关于文件中散列的位置,同一页面是明确的.dockerignore:
如果.dockerignore文件中的一行以第1列中的#开头,则该行被视为注释,并在CLI解释之前被忽略.
缺乏歧义似乎暗示相同并不适用于Dockerfile注释.
我知道在docker文件中使用运行RUN命令以减少步骤/空间是惯例。但是,随着这些内容变长,我还想添加更多注释以使命令清晰明了。
FROM ubuntu:18.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \ # I WANT A COMMENT on what this step is doing
&& apt-get install -y software-properties-common # comments also don't work here, before the slash \
Run Code Online (Sandbox Code Playgroud)
什么是docker / bash语法或docker约定,允许在单个步骤旁边添加注释?如果将注释放在上面指示的位置,则会出现错误
$ sudo docker build .
Sending build context to Docker daemon 4.608kB
Error response from daemon: Dockerfile parse error line 5: unknown instruction: &&
Run Code Online (Sandbox Code Playgroud)
从bash的角度来看这很有意义,但是我几乎没有其他选择来传达该行的意图。
我找不到任何有效的语法。即使 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 …Run Code Online (Sandbox Code Playgroud)