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
如何在if-else条件下构建Docker映像,如下所述?_Docker_Dockerfile - Fatal编程技术网

如何在if-else条件下构建Docker映像,如下所述?

如何在if-else条件下构建Docker映像,如下所述?,docker,dockerfile,Docker,Dockerfile,我需要创建一个dockerfile 我的图片是关于下载2zip文件的。我希望这些zip文件按照以下条件下载 if ($arg == "xxx") 'download this A.zip' else if ($arg == "zzz") 'download this B.zip' else 'download A.zip and B.zip' 现在,根据传递的参数,应该下载提取此类Docker图像、相应的zip文件的人 如何操作?使用A.zip和B.zip创建doc

我需要创建一个
dockerfile

我的图片是关于下载2
zip
文件的。我希望这些
zip
文件按照以下条件下载

if ($arg == "xxx")
    'download this A.zip'
else if ($arg == "zzz") 
    'download this B.zip'
else 
    'download A.zip and B.zip'
现在,根据传递的参数,应该下载提取此类Docker图像、相应的
zip
文件的人


如何操作?

使用
A.zip
B.zip
创建docker映像,并为docker映像设置
CMD
的shell脚本。允许用户在运行时传递环境变量,此shell脚本可以捕获ENV值并相应地执行操作。

在构建映像时,可以使用
ARG
命令和
--build ARG
标志。然后你可以这样做你的假设:

FROM debian
ARG X
RUN /bin/bash -c "if [ '${X}' == 'x' ]; then echo 'A'; else echo 'B'; fi"

docker build--build arg X=X。

如果有人提取图像,他们将得到一个固定的二进制文件,其中包含一个或另一个程序。也许你想要多张图片,每种变体一张?或者,如果zip文件实际上是数据,则将其与图像分开分发,并使用
docker run-v
注入它们?同意David的观点,这看起来更适合使用图像标记。否则,有人将需要拉一个包含两个zip文件的图像,并使用运行时逻辑来选择要使用的图像。