【问题标题】:Dockerfile env variableDockerfile 环境变量
【发布时间】:2020-07-01 07:57:11
【问题描述】:

我想在 Dockerfile.app 中创建环境变量,Sentry 将使用它来对我的构建进行版本控制

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

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

有什么想法吗?

【问题讨论】:

    标签: docker gitlab-ci sentry


    【解决方案1】:

    您不能在 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}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      • 2019-12-07
      • 2017-11-15
      • 2023-04-04
      • 1970-01-01
      相关资源
      最近更新 更多