【发布时间】:2020-01-21 05:24:23
【问题描述】:
之前从未编写过任何 shell 脚本,但在广泛使用谷歌搜索之后,我为我的 docker 文件想出了以下代码。但不明白为什么它不起作用。
###stage 2####################
FROM nginx:alpine
##########Calculate the environment type #########
ARG BUILD_TYPE
####echo of build build_type does gives me output of Development when passed argument is Development.
RUN if [ "$BUILD_TYPE" = "Development" ]; then BUILD_TYPE='dev'; fi
RUN if [ "$BUILD_TYPE" = "Production" ]; then BUILD_TYPE='prod'; fi
RUN echo "UI BUILD_TYPE=$BUILD_TYPE---------"
##########Calculate the environment type #########
上面的回声总是作为发展而来的。
更新
现在我在一个单独的 docker 文件中构建了一个示例来隔离问题。在此之后,我意识到尽管条件匹配,但任务并没有发生。
这是新的示例 docker 文件代码。
FROM nginx:alpine
ARG BUILD_TYPE
ARG ENV_TYPE
RUN if [ "$BUILD_TYPE" = "Development" ]; then ENV_TYPE='dev'; echo "matched dev"; fi
RUN if [ "$BUILD_TYPE" = "Production" ]; then ENV_TYPE="prod"; echo "matched prod"; fi
RUN echo "UI BUILD_TYPE=$BUILD_TYPE ENV_TYPE = $ENV_TYPE---------"
输出是
- 匹配的开发人员
- UI BUILD_TYPE=开发 ENV_TYPE = ---------
我看到 ENV_TYPE 是空的。
【问题讨论】:
-
我觉得这个问题和stackoverflow.com/a/43656644/6284644是一样的
-
@coolcake:请明确要求:您说您想编写一个 POSIX shell 脚本,但是您用 bash 标记了这个问题。如果您需要 POSIX 兼容性,请将此标记替换为 shell。
-
@coolcake :另外,将 docker 标签添加到这个问题中是有意义的。