指定捆绑软件的版本

时间:2018-08-30 13:51:20

标签: docker rubygems bundle bundler

我正在使用bundle构建一个网站,并通过docker容器即时构建它。显然,当我安装ruby-bundler时,它给了我1.15.1而不是1.16.4的捆绑软件,并且抛出警告说我的捆绑软件已经过时了。这导致一些其他问题,例如某些文件正在尝试更新。

这是我的Dockerfile:

FROM ubuntu:17.10

RUN apt-get update && apt-get install -y \
git \
gcc \
make \
ruby \
ruby-dev \
locales \
ruby-bundler \
zlib1g-dev \
curl
RUN gem install bundler 
RUN rm -rf /var/lib/apt/lists/*

# Add support for UTF-8.
RUN localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
ENV LANG en_US.utf8

RUN gem install bundler行在本地为我解决了该问题,但在docker映像上却没有。因此我运行了which -a bundle,它给了我两个目录:/usr/bin/usr/local/bin。新的捆绑器似乎安装在local/bin上,当我运行bundle install时,它不会寻找local/bin,因此向我抛出警告。

克服此问题的最佳方法是什么?请记住,它必须是自动化的。

1 个答案:

答案 0 :(得分:1)

如果我正确理解,则只需要gem install bundler提供的最新版本

在这种情况下,您所需要做的就是从apt-get安装中删除该最终Dockerfile剩余的ruby-bundler

FROM ubuntu:17.10

RUN apt-get update && apt-get install -y \
git \
gcc \
make \
ruby \
ruby-dev \
locales \
zlib1g-dev \
curl
RUN gem install bundler 
RUN rm -rf /var/lib/apt/lists/*

# Add support for UTF-8.
RUN localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
ENV LANG en_US.utf8