Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一种方法可以在Docker文件中使用If条件?_Docker_Dockerfile - Fatal编程技术网

是否有一种方法可以在Docker文件中使用If条件?

是否有一种方法可以在Docker文件中使用If条件?,docker,dockerfile,Docker,Dockerfile,我是新来的docker,我正在寻找一种在docker容器中执行命令的方法,具体取决于环境 在Dockerfile中,我有两个命令,命令a和命令b。如果env='prod'run命令a,else命令b。我怎样才能做到这一点 我试过如下: RUN if [ $env = "prod" ] ; then echo command_a; else echo cpmmand_b; fi; 我怎样才能达到期望的行为 附言: 我知道echo不应该在那里 Docker 17.05及更高版本支持一种使用多阶段构

我是新来的
docker
,我正在寻找一种在docker容器中执行命令的方法,具体取决于环境

在Dockerfile中,我有两个命令,命令a和命令b。如果
env='prod'
run命令a,else命令b。我怎样才能做到这一点

我试过如下:

RUN if [ $env = "prod" ] ; then echo command_a; else echo cpmmand_b; fi;
我怎样才能达到期望的行为

附言:
我知道echo不应该在那里

Docker 17.05及更高版本支持一种使用多阶段构建和构建参数的条件。看看

从博客帖子:

ARG BUILD_VERSION=1
FROM alpine AS base
RUN ...
FROM base AS branch-version-1
RUN touch version1
FROM base AS branch-version-2
RUN touch version2
FROM branch-version-${BUILD_VERSION} AS after-condition
FROM after-condition 
RUN ...

然后使用
docker build--build arg build\u VERSION=value…

我想你已经找到了正确的方法。Docker不提供条件语句,当您尝试这样做时发生了什么?好吧,它在RUN语句中计算条件,一切都与bash或shell@Henry-它当然只是打印了:D它并没有执行它。所以它基本上按照预期工作。现在只需将
echo命令\u a
替换为要运行的命令即可。