我是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: 我知道回声不应该存在。
答案 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 ...