什么" RUN sh -c' touch /app.jar'"做?

时间:2017-12-11 14:46:38

标签: docker dockerfile

有人可以向我解释为什么这条线是必需的以及这条线在做什么?

RUN sh -c 'touch /app.jar'

完整的docker文件看起来像这样,并且在每个templane中都可以找到它。

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD docker-example-service-1.0.jar app.jar
RUN sh -c 'touch /app.jar'
EXPOSE 8080
ENV JAVA_OPTS=""
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-Dapp.port=${app.port}", "-jar","/app.jar"]

2 个答案:

答案 0 :(得分:0)

  

touch是一个标准的Unix命令行界面程序,用于更新文件或目录的访问日期和/或修改日期。 [...] Touch对于快速为程序或脚本创建文件非常有用,这些程序或脚本需要具有特定名称的文件才能成功运行程序,但不要求文件具有任何特定内容。

Wikipedia

在您的情况下,最有可能使用touch命令来确保文件存在。

答案 1 :(得分:0)

touch命令会将时间戳更新为文件目录。

这样您就可以在创建和更新文件时跟踪文件。

RUN sh -c' touch /app.jar'

当您调用docker build时,上面的命令会将时间戳更新为app.jar。

有关触控命令的完整详情,请参阅以下链接 https://www.computerhope.com/unix/utouch.htm