Dockerfile env variable



我想在 Dockerfile.app 中创建 env 变量,哨兵将使用该变量对我的构建进行版本控制

这是我在该文件中的内容:

ENV REACT_APP_RELEASE_VERSION=$(git rev-parse --short HEAD)-$(date -u '+%Y-%m-%dT%H:%M:%SZ')

它在 bash 中工作正常:

REACT_APP_RELEASE_VERSION=2a06954-2020-07-01T07:41:49Z

但是在管道构建我的项目时,它会抛出错误:

Error response from daemon: failed to parse Dockerfile.app: Syntax error - can't find = in "rev-parse". Must be of the form: name=value

有什么想法吗?

您不能在 Dockerfile ENV 中执行变量扩展,因为您可以在 bash 中使用它,但不能在 Dockerfile ENV 中使用它。

为了解决这个问题,你可以在主机上执行 git 操作,并在构建时将纯值传递给 Dockerfile env 或 ARG。

运行时间:

docker run -it --rm -e REACT_APP_RELEASE_VERSION=$(git rev-parse --short HEAD)-$(date -u '+%Y-%m-%dT%H:%M:%SZ') my_image

现在,您将能够在应用程序中使用REACT_APP_RELEASE_VERSION其值。

构建时间:

docker build --build-args REACT_APP_RELEASE_VERSION=$(git rev-parse --short HEAD)-$(date -u '+%Y-%m-%dT%H:%M:%SZ') -t my_image .

并更新 Dockerfile

ARG REACT_APP_RELEASE_VERSION
REACT_APP_RELEASE_VERSION=${REACT_APP_RELEASE_VERSION}

最新更新