Вставка условного оператора RUN в файл докеров

Я пытаюсь написать файл докера, который будет запускать команду RUN для поиска слова в файле package.json и действовать на него:

это мой простой файл докеров:

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

Как мне запустить мою команду? Благодарю.


person lobengula3rd    schedule 10.05.2015    source источник


Ответы (1)


Как и при вводе в оболочке, перед fi требуется либо новая строка, либо точка с запятой:

RUN if grep -q "grunt" package.json; then echo succeed; fi
                                             add this ^
person jwodder    schedule 10.05.2015
comment
Обратите внимание, что он создаст слой, несмотря ни на что. - person Vincent Demeester; 11.05.2015
comment
Также обратите внимание, что это будет распространять только код выхода последнего оператора в блоке «тогда». Это не проблема, если есть только один оператор (как в приведенном выше примере), но если есть несколько операторов, любой сбой в операторе, кроме последнего, НЕ приведет к сбою сборки образа. - person wjv; 16.06.2017