docker compose build 尽管失败,但似乎给出了退出代码 0

问题描述 投票:0回答:1

我的 makefile 有这样的东西:

build:
    docker compose build && \
    touch build || \
    rm -f build

尽管在输出中看到构建错误,它似乎仍然在运行 touch 命令。知道为什么吗?

我有 docker 23.0.5。我试过 Make 4.3 和 4.4.1

docker docker-compose makefile gnu-make
1个回答
0
投票

这是一道shell编程题,不是makefile题。当你在 shell 中写这个时:

command1 && command2

然后

command2
只有在
command1
没有失败时才会被调用。那么,shell 如何知道
command1
是否失败?每个被调用的命令在停止时都会提供一个退出代码。如果退出代码为 0,则 shell 认为命令已成功(并将运行
command2
)。如果退出代码是 0 以外的任何其他值,则 shell 认为命令失败(并且不会运行
command2
)。

如果命令

docker compose build && touch build
正在运行
touch
命令,则意味着
docker compose build
正在以成功 (0) 退出代码退出。如果您在 docker 中调用的命令失败,则失败的退出代码不会被传输为
docker compose
命令的退出代码。

© www.soinside.com 2019 - 2024. All rights reserved.