无法通过其他 RUN 命令访问我的 Docker 文件中下载的存储库

问题描述 投票:0回答:1

我正在设置一个 docker 映像,我已经设法让它工作,但只能通过运行一个包含其中所有内容的长

RUN
命令来实现。
我想把它分成更小的
RUN
命令,以便于维护和调试等

我的第一个

RUN
命令如下所示:

 RUN apt-get update --quiet && \
  apt-get install --quiet --yes --no-install-recommends \
  build-essential \
  libssl-dev \
  zlib1g-dev \
  libreadline-dev \
  libffi-dev \
  libyaml-dev && \
  git clone --depth 1 https://github.com/rbenv/rbenv.git ~/.rbenv && \
  git clone --depth 1 https://github.com/rbenv/ruby-build.git  && \
  echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc && \
  echo 'eval "$(rbenv init -)"' >> ~/.bashrc && \
  /bin/bash -c "source ~/.bashrc"

当我尝试在下一个

RUN
命令中调用 rbenv 安装脚本时,docker 找不到它。这是为什么呢? 我尝试在新的
RUN
命令中添加路径,但似乎没有什么区别。
我做错了什么?

docker dockerfile
1个回答
0
投票

这里的问题与

PATH
环境变量有关。 Dockerfile 中的每个
RUN
指令都在新的 shell 会话中执行,并且环境更改(例如对
PATH
中的
.bashrc
的修改)不会在这些会话中持续存在。

您需要通过 Docker

PATH
指令显式设置
ENV
,如下所示:

ENV PATH="$HOME/.rbenv/bin:$PATH" 

您可以在这个stackoverflow答案中找到更多信息, 在这篇 Baeldung 文章中。

© www.soinside.com 2019 - 2024. All rights reserved.