Ruby on rails 您必须在此锁定文件中使用Bundler 2或更高版本。在本地运行docker compose时
docker新手,我一直试图在rails项目中使用它,但一直无法启动它 尝试更改ruby版本和搜索web,但大多数问题都涉及到将应用程序部署到heroku,这不是我的情况 Docker文件:Ruby on rails 您必须在此锁定文件中使用Bundler 2或更高版本。在本地运行docker compose时,ruby-on-rails,ruby,docker,docker-compose,dockerfile,Ruby On Rails,Ruby,Docker,Docker Compose,Dockerfile,docker新手,我一直试图在rails项目中使用它,但一直无法启动它 尝试更改ruby版本和搜索web,但大多数问题都涉及到将应用程序部署到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
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"]
码头工人
version: '3'
services:
web:
build: .
command: rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/zssn
ports:
- "3000:3000"
docker build--没有缓存,在运行bundler命令安装它时似乎工作正常
---> Running in d4650608f428
Successfully installed bundler-2.0.1
有什么想法吗?我认为您需要升级到bundler 2附带的ruby映像(例如来自ruby:2.6.3的
),或者使用您想要使用的bundler版本重新处理您的Gemfile.lock
。至少这对我来说是有效的
按照工程师的建议调整环境变量是行不通的
这使我认为这是预期的行为,但我可能完全错了。在运行bundle安装之前将这一行添加到Dockerfile对我来说很有帮助
RUN gem install bundler -v 2.0.1
将此留在此处以备将来参考 在Gemfile.lock的底部,您可以找到捆绑包版本:
BUNDLED WITH
2.0.1
请确保您将其与您拥有的正确版本捆绑在一起您需要更新Rubygems:
RUN gem update --system
除了确保您拥有正确的bundler版本外,请运行:
RUN gem install bundler -v 2.0.1
您可以找到一个深入的解释。Ruby image随附已安装的捆绑包
。
默认情况下,环境变量BUNDLER\u VERSION
设置为预安装版本的BUNDLER
。即使卸载此版本,bundle
也会检查此环境变量并
如果存在v1/v2不匹配,则引发错误“您必须在此锁定文件中使用Bundler 2或更高版本”
确保您的Gemfile.lock
与所需版本捆绑在一起:
BUNDLED WITH
2.1.4
如果您有其他版本,可以通过运行bundle update--Bundler
在Dockerfile
中,将环境变量BUNDLER\u VERSION
覆盖到所需的BUNDLER版本并安装:
ENV BUNDLER_VERSION=2.1.4
RUN gem update --system && \
gem install bundler:2.1.4 && \
bundle install
谢谢你的回复!试过了,但还是没有运气。这对我不起作用。。。有什么建议吗?我使用bundler 2.1.4在本地创建了该项目,并在Dockerfile上指定了相同的版本以及一个gem更新——之前的系统。