gpt4 book ai didi

docker - 如何忽略 dockerfile 非零返回码?

转载 作者:行者123 更新时间:2023-12-02 18:39:23 25 4
gpt4 key购买 nike

我正在为 meganz cmd 实用程序开发 dockerfile。

我已经为登录命令设置了环境变量,它在我的私有(private)构建中按预期工作,使用合法的用户名和密码。

我正在使用 dockerhub 进行公共(public)构建,并使用默认值填充环境变量,这导致自动构建在 DockerHub 中失败。

是否可以在构建期间忽略此特定错误以使其通过?我完全希望此命令在使用默认凭据时失败。

运行 mega-login ${email} ${password}

命令“/bin/sh -c mega-login ${email} ${password}”返回了一个非零代码:13

最佳答案

您可以使用 || 绕过退出代码。类似下一个:

旧 Dockerfile:

FROM ubuntu:16.04
RUN lll
RUN pwd

旧执行:

$ docker build -t abc:1 .
Sending build context to Docker daemon 2.048kB
Step 1/3 : FROM ubuntu:16.04
---> 065cf14a189c
Step 2/3 : RUN lll
---> Running in b7f9a2fd7f6d
/bin/sh: 1: lll: not found
The command '/bin/sh -c lll' returned a non-zero code: 127

新的 Dockerfile:

FROM ubuntu:16.04
RUN lll || :
RUN pwd

新执行:

$ docker build -t abc:1 .
Sending build context to Docker daemon 2.048kB
Step 1/3 : FROM ubuntu:16.04
---> 065cf14a189c
Step 2/3 : RUN lll || :
---> Running in 9a0b3ebea003
/bin/sh: 1: lll: not found
Removing intermediate container 9a0b3ebea003
---> af76014cf9aa
Step 3/3 : RUN pwd
---> Running in a4766055c81e
/
Removing intermediate container a4766055c81e
---> c82c077ed8ea
Successfully built c82c077ed8ea
Successfully tagged abc:1

解释 cmd1 || cmd2:

如果 cmd1 退出代码为零,则 cmd2 将不会执行,如果 cmd1 退出代码为非零,则 cmd2 将运行。这里,: 表示一个空命令,它会导致退出代码为零,然后它会欺骗 docker build 让它不退出。

所以,对你来说可能是:

RUN mega-login ${email} ${password} || :

关于docker - 如何忽略 dockerfile 非零返回码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68250804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com