我正在设置一个 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
命令中添加路径,但似乎没有什么区别。这里的问题与
PATH
环境变量有关。 Dockerfile 中的每个 RUN
指令都在新的 shell 会话中执行,并且环境更改(例如对 PATH
中的 .bashrc
的修改)不会在这些会话中持续存在。
您需要通过 Docker
PATH
指令显式设置 ENV
,如下所示:
ENV PATH="$HOME/.rbenv/bin:$PATH"
您可以在这个stackoverflow答案中找到更多信息, 在这篇 Baeldung 文章中。