当前位置: 首页 > 面试题库 >

在dockerfile中插入条件RUN语句

吴镜
2023-03-14
问题内容

我正在尝试编写一个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 ^


 类似资料:
  • Dockerfile最佳实践为用法提供了以下建议: 始终将RUN apt-get update与apt-get install组合在同一个RUN语句中。 我是否也应该对使用相同的规则?例如。DockerFile中的哪一个实践更好:

  • 问题内容: 是否可以根据构建的值在Dockerfile中有条件地设置变量? 例如:类似 更新:基于Mario的答案的当前用法: 但是,先运行然后进入主机,我仍然可以 问题答案: 是的,可以,但是您需要使用build参数作为标志。您可以使用Shell的参数扩展功能来检查条件。这是概念验证的Docker文件: 测试版本:

  • 与手动使用Docker run相比,使用Dockerfile在Docker中发布的端口有问题。使用以下命令,Docker容器成功启动,当我使用http://192.168.99.100:8080- 访问浏览器中的主机IP地址(192.168.99.100)时,RabbitMQ Web管理仪表板加载。 此时,我运行以下操作以从DockerFile中释放我要使用的端口: 当我运行下面的docker-c

  • 问题内容: 我在形成条件插入时遇到困难 我有x_table的列(实例,用户,项目),其中实例ID是唯一的。我只想在用户已经没有给定项目的情况下插入新行。 例如,尝试插入instance = 919191 user = 123 item = 456 朝正确方向的任何帮助或指导将不胜感激。 问题答案: 如果您的DBMS在执行插入操作时不限制从哪个表中选择,请尝试: 在这里,是一个只有一行的表(最初在O

  • 我需要创建一个在表中插入或不插入数据的条件。有11个字段,从6到11,用户可以填写,也可以不填写。如果没有,它就不能保存此表中的任何数据。代码已创建,但正在进行插入。有人知道怎么修理吗?谢谢!

  • 请耐心等待,因为我试图引入一个与许多活动线程直接矛盾的新概念。 在HashSet中插入对象的条件是什么? 查看源代码,它会关注: 完整代码位于:HashSet.java 所以,这取决于 哈希码 等于() == 即如果它们是相同的对象。 看看条件4。尽管equals()返回false,但对象会被添加到HashSet。在所有其他情况下,当且仅当equals()返回false时,对象才会被添加。因此,可