【问题标题】:You must use Bundler 2 or greater with this lockfile. When running docker-compose up locally您必须将此锁定文件与 Bundler 2 或更高版本一起使用。在本地运行 docker-compose up 时
【发布时间】:2019-09-18 10:37:57
【问题描述】:

docker 新手,我一直在尝试将它与我的 rails 项目一起使用,但无法启动它。

尝试更改 ruby​​ 版本并搜索网络,但大多数问题涉及将应用程序部署到 heroku,这不是我的情况。

Docker 文件:

FROM ruby:2.4.1
RUN mkdir /zssn
WORKDIR /zssn
COPY Gemfile /zssn/Gemfile
COPY Gemfile.lock /zssn/Gemfile.lock
RUN gem install bundler
RUN bundle --version
RUN bundle install
COPY . /zssn

CMD ["rails", "server"]

docker-compose-yml

version: '3'
services:
  web:
    build: .
    command: rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/zssn
    ports:
      - "3000:3000"

码头工人建造。 --no-cache,在运行 bundler 命令安装它时似乎工作正常。

 ---> Running in d4650608f428
Successfully installed bundler-2.0.1

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails ruby docker docker-compose dockerfile


    【解决方案1】:

    在 RUN bundle install 到 Dockerfile 之前添加这一行对我来说是成功的。

    RUN gem install bundler -v 2.0.1
    

    将此留在这里以备将来参考!

    【讨论】:

    • 这对我不起作用...有什么建议吗?我在本地使用 bundler 2.1.4 创建了项目,并在 Dockerfile 上指定了相同的版本以及之前的 gem update --system。
    【解决方案2】:

    您需要更新 Rubygems:

    RUN gem update --system
    

    除了确保您拥有正确的捆绑程序版本外,运行:

    RUN gem install bundler -v 2.0.1
    

    Here你可以找到深刻的解释。

    【讨论】:

      【解决方案3】:

      Ruby 图像附带安装的bundler。 环境变量BUNDLER_VERSION 默认设置为bundler 的预安装版本。即使你卸载了这个版本,bundle 也会检查这个环境变量并且 如果存在 v1/v2 不匹配,则引发错误“您必须在此锁定文件中使用 Bundler 2 或更高版本”

      确保您的Gemfile.lock 与所需版本捆绑:

      BUNDLED WITH
         2.1.4
      

      如果您有其他版本,您可以通过运行 bundle update --bundler https://bundler.io/man/bundle-update.1.html 将您的应用程序升级到最新安装的 Bundler 版本

      Dockerfile 覆盖环境变量BUNDLER_VERSION 到所需版本的捆绑器并安装它:

      ENV BUNDLER_VERSION=2.1.4
      
      RUN gem update --system && \
          gem install bundler:2.1.4 && \
          bundle install
      

      【讨论】:

        【解决方案4】:

        在您的 Gemfile.lock 中,您可能会在底部找到捆绑版本:

        BUNDLED WITH
        2.0.1
        

        请确保您将它与您拥有的正确版本捆绑在一起

        【讨论】:

          【解决方案5】:

          我认为您需要升级到捆绑器 2 附带的 ruby​​ 映像(例如 FROM ruby:2.6.3),或者将您的 Gemfile.lock 重新捆绑到您要使用的捆绑器版本。或者至少这对我有用。

          没有按照Bundler guides 的建议调整环境变量。

          github issue 让我认为这是预期的行为,但我可能完全错了。

          【讨论】:

          • 感谢您的回复!试过了,还是不行。
          猜你喜欢
          • 2020-04-14
          • 2019-04-13
          • 2020-07-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-20
          相关资源
          最近更新 更多