【发布时间】:2020-04-14 17:53:00
【问题描述】:
我正在尝试将捆绑程序版本 2.1 安装在从 ruby:2.4.1 构建的 docker 映像中。我的 Docker 文件如下所示:
FROM ruby:2.4.1
RUN \
gem update --system --quiet && \
gem install bundler -v '~> 2.1'
# Other commands
但是当我尝试运行 bundle install 时它失败了
You must use Bundler 2 or greater with this lockfile.
当我在容器 gem info bundler 内运行时,它会输出:
bundler (2.1.2, 1.15.4)
Authors: André Arko, Samuel Giddins, Colby Swandale, Hiroshi
Shibata, David Rodríguez, Grey Baker, Stephanie Morillo, Chris
Morris, James Wen, Tim Moore, André Medeiros, Jessica Lynn Suttles,
Terence Lee, Carl Lerche, Yehuda Katz
Homepage: https://bundler.io
License: MIT
Installed at (2.1.2): /usr/local/bundle
(1.15.4): /usr/local/lib/ruby/gems/2.4.0
我尝试了以下修复:
# Set bundler 2.1.2 as default
bundler config default 2.1.2
# Update bundler
gem update bundler
但他们没有工作。系统继续使用bundlerv1.15.4
如何在 ruby docker 映像中将 bundler v2.1.2 设为默认值?
【问题讨论】:
-
你的
Gemfile.lock中的版本号是多少;正好是 2.1.2 吗?您能否编辑您的问题以包含相关的COPY和RUNDockerfile 指令来重现此问题? -
@DavidMaze Gemfile.lock 有
BUNDLED WITH 2.1.1。我猜任何大于2.0.0的捆绑器版本都可以。我使用问题中的 docker image 使用 Gitlab CI 运行构建,并且没有重现该问题的 RUN 和 COPY 命令。这些命令位于.gitlab-ci.yml。我会更新我的问题,谢谢 -
Bundler 2.1 具有a pretty significant bug,您必须完全安装在
Gemfile.lock版本中命名的捆绑器版本。症状与您在此处描述的不太一样,但语义版本约束不再起作用。gem install bundler -v 2.1.1有影响吗? -
你能通过 gem 卸载移除 v1.15.4 吗?