在dockerfile中插入条件RUN语句

lob*_*3rd 31 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
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我只想要一个简单的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
Run Code Online (Sandbox Code Playgroud)

我该怎么办命令?谢谢.

jwo*_*der 49

就像在shell中键入时一样,您需要使用换行符或分号fi:

RUN if grep -q "grunt" package.json; then echo succeed; fi
                                             add this ^
Run Code Online (Sandbox Code Playgroud)

  • 请注意,无论如何,它都会创建一个图层. (13认同)
  • 另请注意,这只会传播"then"块中最后一个语句的退出代码.如果只有一个语句(如上例所示),这不是问题,但如果有多个语句,则除最后一个语句之外的语句中的任何失败都不会导致映像构建失败. (2认同)