Dockerfile - 运行 和设置 ENV - 中间容器

Dockerfile - RUN and setting ENV - intermediate container

编辑

我想使用以下命令将最后一个 git 短散列传递到我的 React 应用程序构建中: git log -1 --pretty=%h

因此在我的 Dockerfile 中,我想要如下内容:

ARG REACT_APP_GIT_SHORTHASH
RUN git clone https://token@github.com/paulywill/repo.git && cd repo && export REACT_APP_GIT_SHORTHASH=`git log -1 --pretty=%h`
ENV REACT_APP_GIT_SHORTHASH $REACT_APP_GIT_SHORTHASH

在我的 Github Actions 构建中,我得到以下信息:

Step 6/14 : ARG REACT_APP_GIT_SHORTHASH
 ---> Running in f45f530d5c76
Removing intermediate container f45f530d5c76
 ---> 87a91c010aaf
Step 7/14 : RUN git clone https://***@github.com/paulywill/repo.git && cd repo && export REACT_APP_GIT_SHORTHASH=$(git log -1 --pretty=%h)
 ---> Running in b8a8fa3cd703
Cloning into 'repo'...
Removing intermediate container b8a8fa3cd703
 ---> 5bbf3a76b928
Step 8/14 : ENV REACT_APP_GIT_SHORTHASH $REACT_APP_GIT_SHORTHASH
 ---> Running in f624f2e59dc6
Removing intermediate container f624f2e59dc6
 ---> d15c3c276062

如果这些命令 intermediate container 不同,它们是否甚至可见或能够传递值?

ROM ubuntu:20.04
ARG REACT_APP_GIT_SHORTHASH
RUN apt-get update -y
RUN apt-get install git -y
RUN git clone https://github.com/pooya-mohammadi/deep_utils.git
WORKDIR deep_utils
RUN REACT_APP_GIT_SHORTHASH=`git log -1 --pretty=%h`
ENV REACT_APP_GIT_SHORTHASH $REACT_APP_GIT_SHORTHASH

deep_utils 更改为您的存储库名称。我发现 cd <directory> 有问题。

根据 并部分感谢 @david-maze 为我指明了正确的方向,我可以轻松地在 docker build 之前获取 git 短散列。

.github/deploy.yml

...
 - name: Set outputs
      id: vars
      run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
    - name: Check outputs
      run: echo ${{ steps.vars.outputs.sha_short }}
   ...
     docker build --build-arg REACT_APP_GIT_SHORTHASH=${{ steps.vars.outputs.sha_short }} -t $ECR_REPOSITORY_CLIENT .

Dockerfile

FROM node:16-alpine
ARG VERSION
ENV VERSION $VERSION
ARG REACT_APP_GIT_SHORTHASH
ENV REACT_APP_GIT_SHORTHASH $REACT_APP_GIT_SHORTHASH
...