您必须将此锁定文件使用 Bundler 2 或更高版本。在本地运行 docker-compose up 时

que*_*vqz 11 ruby ruby-on-rails docker dockerfile docker-compose

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

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

码头工人文件:

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"]
Run Code Online (Sandbox Code Playgroud)

docker-compose-yml

version: '3'
services:
  web:
    build: .
    command: rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/zssn
    ports:
      - "3000:3000"
Run Code Online (Sandbox Code Playgroud)

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

 ---> Running in d4650608f428
Successfully installed bundler-2.0.1
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

que*_*vqz 15

在 RUN bundle install 到 Dockerfile 之前添加这一行对我来说很有用。

RUN gem install bundler -v 2.0.1
Run Code Online (Sandbox Code Playgroud)

留在这里以备将来参考!


art*_*ikh 7

Ruby 映像随安装的bundler. 环境变量默认BUNDLER_VERSION设置为预安装版本。bundler即使您卸载此版本,bundle如果 v1/v2 不匹配,也会检查此环境变量并引发错误“您必须将 Bundler 2 或更高版本与此锁定文件一起使用”

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

BUNDLED WITH
   2.1.4
Run Code Online (Sandbox Code Playgroud)

如果您有其他版本,可以通过运行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
Run Code Online (Sandbox Code Playgroud)


Fra*_*nez 5

您需要更新 Rubygems:

RUN gem update --system
Run Code Online (Sandbox Code Playgroud)

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

RUN gem install bundler -v 2.0.1
Run Code Online (Sandbox Code Playgroud)

在这里你可以找到一个深刻的解释。