我无法让条件Dockerfile工作。
我的命令是:docker build -t test --progress=plain --build-arg APP_BRANCH=main
.
FROM alpine:latest AS base
ARG APP_BRANCH
我试过使用简单的if... else:
RUN\
if [ "${APP_BRANCH}" == "main" ];\
then echo "MAIN app";\
elif [ "${APP_BRANCH}" == "dev" ];\
then echo "DEV app";\
else echo "Something else!!";\
fi
我收到类似/bin/sh: 1: [: main: unexpected operator
fixed的东西
看看变量是否被设置了。确实是。
然后我尝试使用MultiStage构建:
FROM base AS main
RUN echo "MAIN"
FROM base AS prod
RUN echo "PROD"
FROM ${APP_BRANCH} AS final
RUN echo "FINAL"
并得到输出:base name (${APP_BRANCH}) should not be blank
我还尝试在entrypoint中使用${APP_分支} var
ENTRYPOINT ["java", "-jar", "/usr/share/myapp/myAppName-${APP_BRANCH}.jar
但是它的行为就像变量没有被设置。Buildkit被禁用了。我该怎么做才能让它工作呢?
2条答案
按热度按时间gjmwrych1#
我不能复制你的问题。
使用以下Dockerfile
这个build命令
它成功构建,并在构建输出中显示
MAIN app
。这是在Ubuntu 20.04主机和Docker 23.0.1上。
如果你仍然有这个问题,请编辑你的帖子,包括一个完整的Dockerfile和你用来构建它的确切命令。
tzxcd3kk2#
错误消息看起来像从破折号.
==
是 * 非标准 * 参数到[
.=
是标准的。使用[ "${APP_BRANCH}" = "main" ]
。