Docker:您必须将 Bundler 2 或更高版本与此锁定文件一起使用

Docker: You must use Bundler 2 or greater with this lockfile

我正在尝试在从 ruby:2.4.1 构建的 docker 映像中安装捆绑程序版本 2.1。我的 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

但是他们没有用。系统继续使用bundler v1.15.4

如何在 ruby docker 图像中将捆绑器 v2.1.2 作为默认值?

我可以使用以下命令在我的 docker 图像中切换到捆绑器版本 2.1:

# Dockerfile
RUN \
  gem update --system --quiet && \
  gem install  bundler -v '~> 2.1'
ENV BUNDLER_VERSION 2.1

要使用以前的版本,请尝试此修复。看起来 Gemfile.lock 有问题。尝试 从 gemfile.lock.

中删除 BUNDLED WITH

删除类似的内容并重新构建

BUNDLED WITH
   2.1.4