有没有一种方法可以在Dockefile中使用If条件?

时间:2018-08-16 13:06:33

标签: docker dockerfile

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

在Dockerfile中,我有2个命令,command_a和command_b。如果env = 'prod'运行command_a,否则运行command_b。我该如何实现?

我尝试如下:

RUN if [ $env = "prod" ] ; then echo command_a; else echo cpmmand_b; fi;

如何实现所需的行为?

PS: 我知道回声不应该存在。

1 个答案:

答案 0 :(得分:0)

Docker 17.05及更高版本支持使用多阶段构建和构建args的一种条件。看看https://medium.com/@tonistiigi/advanced-multi-stage-build-patterns-6f741b852fae

来自博客文章:

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_VERSION=value ...