在 Docker 中,如何捕获命令的输出以用于我的 Docker 文件的其他部分?
In Docker, how do I capture the output of a command for use in other parts of my Dockerfile?
我正在使用 Docker v20.10.12。我的 Docker 文件
中有这个
ENV RBENV_VERSION 3.0.2
RUN eval "$(rbenv init -)"; rbenv install $RBENV_VERSION \
&& eval "$(rbenv init -)"; rbenv global $RBENV_VERSION \
&& eval "$(rbenv init -)"; gem update --system \
&& eval "$(rbenv init -)"; gem install bundler -f \
&& rm -rf /tmp/*
我想将 RBENV_VERSION 设置为命令“$(cat .ruby-version)”的输出,以便与我的 运行 命令一起使用,但是显然不可能以这种方式设置 Docker ENV var。有没有另一种方法来捕获该命令的输出并在我的 Docker 文件中使用它,如果不是只在那个 运行 命令中?
我最后做了这个
ARG RBENV_VERSION="`cat .ruby-version`"
RUN RBENV_VERSION=$(eval ${RBENV_VERSION}); eval "$(rbenv init -)"; rbenv install $RBENV_VERSION \
&& eval "$(rbenv init -)"; rbenv global $RBENV_VERSION \
&& eval "$(rbenv init -)"; gem update --system \
&& eval "$(rbenv init -)"; gem install bundler -f \
&& rm -rf /tmp/*
我正在使用 Docker v20.10.12。我的 Docker 文件
中有这个ENV RBENV_VERSION 3.0.2
RUN eval "$(rbenv init -)"; rbenv install $RBENV_VERSION \
&& eval "$(rbenv init -)"; rbenv global $RBENV_VERSION \
&& eval "$(rbenv init -)"; gem update --system \
&& eval "$(rbenv init -)"; gem install bundler -f \
&& rm -rf /tmp/*
我想将 RBENV_VERSION 设置为命令“$(cat .ruby-version)”的输出,以便与我的 运行 命令一起使用,但是显然不可能以这种方式设置 Docker ENV var。有没有另一种方法来捕获该命令的输出并在我的 Docker 文件中使用它,如果不是只在那个 运行 命令中?
我最后做了这个
ARG RBENV_VERSION="`cat .ruby-version`"
RUN RBENV_VERSION=$(eval ${RBENV_VERSION}); eval "$(rbenv init -)"; rbenv install $RBENV_VERSION \
&& eval "$(rbenv init -)"; rbenv global $RBENV_VERSION \
&& eval "$(rbenv init -)"; gem update --system \
&& eval "$(rbenv init -)"; gem install bundler -f \
&& rm -rf /tmp/*