Shell 在dockerfile中插入条件运行语句

Shell 在dockerfile中插入条件运行语句,shell,docker,boot2docker,Shell,Docker,Boot2docker,我正在尝试编写一个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 "grun

我正在尝试编写一个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中键入时一样,在
fi
之前需要换行符或分号:

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

请注意,不管怎样,它都会创建一个层。还要注意,这只会传播“then”块中最后一条语句的退出代码。如果只有一条语句(如上例所示),则这不是问题,但如果有多条语句,则除最后一条语句之外的语句中的任何失败都不会导致映像生成失败。