“空的延续行将成为错误”......我现在应该如何评论我的Dockerfile?

时间:2017-10-12 11:06:23

标签: docker dockerfile

考虑以下Dockerfile:

FROM alpine:edge

EXPOSE \
# web portal
8080 \
# backdoor
8081

这样建造:

docker build .

我们观察到这样的输出:

Sending build context to Docker daemon  17.1TB
Step 1/2 : FROM alpine:edge
 ---> 7463224280b0
Step 2/2 : EXPOSE 8080 8081
 ---> Using cache
 ---> 7953f8df04d9
[WARNING]: Empty continuation line found in:
    EXPOSE 8080 8081
[WARNING]: Empty continuation lines will become errors in a future release.
Successfully built 7953f8df04d9

所以,鉴于将评论放在多行部分的中间很快就会变得非法:评论多行命令的新推荐方法是什么

这对于RUN命令尤为重要,因为我们鼓励我们通过&&命令一起减少图像层。

不确定这是什么时候引入的,但我目前在版本中遇到过这个问题:

 docker --version
Docker version 17.07.0-ce, build 8784753

我正在使用Docker的 edge 版本流,所以如果您使用Docker稳定版,这可能还不太熟悉。

3 个答案:

答案 0 :(得分:9)

17.07.0-ce开始警告空的延续线。但是,它错误地将仅注释行视为空。这已在moby#35004中修复,并包含在17.10.0-ce

答案 1 :(得分:1)

您可以将RUN命令分解为单独的行,然后使用实验(在编写*时)--squash命令。

*请注意,有人建议multi-stage builds可能会使--squash多余。正在积极讨论here,提案已开启here

答案 2 :(得分:0)

如果像我一样,来到这里时遇到相同的错误,但在Dockerfile的RUN项目中没有任何注释,则说明您的行末尾有混合的也有DOS的。在您的Dockerfile上运行dos2unix,它将对其进行修复。