在Docker文件中包含If else语句

4

我希望创建一个带有条件语句的Docker文件,我从外部获取参数(BUILD_TOOL)。 这是代码,但在构建Docker镜像时出现错误。

我遇到了这个错误 = Dockerfile解析错误第23行:未知指令:ELSE

RUN if [ "$BUILD_TOOL" = "maven" ] ; then 
    RUN mvn clean install;

#if build tool is gradle
else 
    RUN gradle clean;
fi

Dockerfiles没有条件语句。正如@anemyte所建议和链接的问题所示,你可以在一个单独的RUN语句中使用RUN if ...; then ...; else ...; fi,这对于你展示的内容已经足够了。 - undefined
1个回答

10

Dokerfile 本身没有条件语句。然而,您可以在 shell 中实现它们:

RUN if [ "$BUILD_TOOL" = "maven" ] ; then \
       echo do something; \
    else \
       echo do something else; \
    fi

当你使用多行命令时,请记得在每行末尾添加\


如果我输入'',run命令无法识别。 - undefined
@TarangRathod 你可能在命令的最后一行添加了一个。最后一行不应该以\结尾,就像示例中的fi一样。 - undefined
我正在做类似这样的事情:RUN if [ "$zxbild" = "demo" ] ; then \ RUN npm run zxDemo; fi 。也许它不能正常运行,因为你说它是 shell 的方式而不是 Docker 的方式。 - undefined
在反斜杠后面删除第二个RUN - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接