【问题标题】:How to make docker fail or check version exists如何使docker失败或检查版本是否存在
【发布时间】:2017-05-10 09:56:45
【问题描述】:

我让 maven 运行 bash 来使用 Docker 构建一些东西。

<plugin>
    ...
    <artifactId>maven-antrun-plugin</artifactId>
        ...
            <exec executable="${basedir}/generate.sh" failonerror="true">
                                <arg value="${thrift.version}" />
...

bash 脚本运行如下:

for file in src/main/thrift/*.thrift; do
    echo "Compiling ${file}"
    docker run {...} thrift:${THRIFT_VERSION} thrift {...}
done

我的问题是,当 Docker 找不到我请求的版本时,它会在控制台中显示错误但它并没有“失败”:它只是继续构建。

 [exec] Compiling src/main/thrift/amsException.thrift
 [exec] docker: Tag 0.9.0 not found in repository docker.io/library/thrift.
 [exec] See 'docker run --help'.
 [exec] Unable to find image 'thrift:0.9.0' locally

因此 maven 说

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

当找不到版本时,如何让 Docker 抛出错误?我的最终目标是 Maven 在发生这种情况时无法进行全新安装。

干杯!

【问题讨论】:

  • 我想另一种选择是事先检查版本是否存在,但我仍然需要抛出错误。

标签: bash maven docker maven-antrun-plugin


【解决方案1】:

您可以查看docker run 退出代码。如果不是 0,则中止你的脚本。

for file in src/main/thrift/*.thrift; do
    echo "Compiling ${file}"
    docker run {...} thrift:${THRIFT_VERSION} thrift {...}
    if [ $? != 0 ]; then
        exit -1
    fi
done

【讨论】:

  • 一口气搞定,不用查$?:if docker run ...; then ...; fi
猜你喜欢
  • 2020-07-08
  • 2014-01-30
  • 1970-01-01
  • 1970-01-01
  • 2016-09-17
  • 2017-06-07
  • 2017-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多