【问题标题】:Inserting a conditional RUN statement inside a dockerfile在 dockerfile 中插入条件 RUN 语句
【发布时间】:2015-07-21 07:49:51
【问题描述】:

我正在尝试编写一个 docker 文件,该文件将运行一个 RUN 命令来搜索 package.json 文件中的单词并对其进行操作:

这是我的简单 dockerfile:

FROM ubuntu:14.04

COPY package.json package.json

RUN if grep -q "grunt" package.json; then echo succeed fi

如你所见,我只想要一个简单的 if 语句,但它得到了这个错误:

Step 2 : RUN if grep -q "grunt" package.json; then echo succeed fi
 ---> Running in af460df45239
/bin/sh: 1: Syntax error: end of file unexpected (expecting "fi")
INFO[0001] The command [/bin/sh -c if grep -q "grunt" package.json; then echo succeed fi] returned a non-zero code: 2

我应该如何运行我的命令? 谢谢。

【问题讨论】:

    标签: shell docker boot2docker


    【解决方案1】:

    就像在 shell 中输入一样,fi 之前需要换行符或分号:

    RUN if grep -q "grunt" package.json; then echo succeed; fi
                                                 add this ^
    

    【讨论】:

    • 请注意,无论如何它都会创建一个图层。
    • 还要注意,这只会传播“then”块中最后一条语句的退出代码。如果只有一个语句(如上例),这不是问题,但如果有多个语句,则除最后一个语句之外的任何语句中的任何失败都不会导致映像构建失败。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 2018-03-24
    • 2013-01-29
    • 2022-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多