为什么“bundle install -path”在“bundle install”工作时中断?

`require':LoadError:无法加载这样的文件 – mysql2 / mysql2(Sequel :: AdapterNotFound)

我只有在使用bundle install --path时候才会收到上面的错误。 当我切换到正常的bundle install一切都完美的作品。

在我头撞墙的时间过了好几个小时后,我想是时候请求帮忙了。 我如何获得bundle install --path工作? 我认为它与Docker容器中的bundle环境有关?


这个包env的作品:

 Environment Bundler 1.13.6 Rubygems 2.6.8 Ruby 2.3.2p217 (2016-11-15 revision 56796) [x86_64-linux] GEM_HOME /usr/local/bundle GEM_PATH Git 2.1.4 Bundler settings disable_shared_gems Set for your local app (/usr/local/bundle/config): "true" path Set via BUNDLE_PATH: "/usr/local/bundle" bin Set via BUNDLE_BIN: "/usr/local/bundle/bin" silence_root_warning Set via BUNDLE_SILENCE_ROOT_WARNING: "1" app_config Set via BUNDLE_APP_CONFIG: "/usr/local/bundle" bin_path Set via BUNDLE_BIN_PATH: "/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.6/exe/bundle" gemfile Set via BUNDLE_GEMFILE: "/usr/src/app/Gemfile" 

这个包env不起作用:

 Environment Bundler 1.13.6 Rubygems 2.6.8 Ruby 2.3.2p217 (2016-11-15 revision 56796) [x86_64-linux] GEM_HOME /usr/src/app/vendor/bundle/ruby/2.3.0 GEM_PATH Git 2.1.4 Bundler settings path Set for your local app (/usr/local/bundle/config): "vendor/bundle" Set via BUNDLE_PATH: "/usr/local/bundle" disable_shared_gems Set for your local app (/usr/local/bundle/config): "true" bin Set via BUNDLE_BIN: "/usr/local/bundle/bin" silence_root_warning Set via BUNDLE_SILENCE_ROOT_WARNING: "1" app_config Set via BUNDLE_APP_CONFIG: "/usr/local/bundle" bin_path Set via BUNDLE_BIN_PATH: "/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.6/exe/bundle" gemfile Set via BUNDLE_GEMFILE: "/usr/src/app/Gemfile" 

Dockerfile

 FROM ruby:2.3.2 WORKDIR /usr/src/app COPY Gemfile . RUN bundle install --path vendor/bundle 

docker-compose.yml

 version: "2" services: app: build: context: . dockerfile: Dockerfile volumes: - .:/usr/src/app links: - db db: image: mysql:5.6 ports: - "3306:3306" volumes: - ./schema/create_markup.sql:/docker-entrypoint-initdb.d/create_markup.sql - db_data:/var/lib/mysql environment: MYSQL_ALLOW_EMPTY_PASSWORD: "yes" volumes: db_data: 

Gemfile

 # frozen_string_literal: true source "https://rubygems.org" gem "mysql2" gem "sequel" group :test do gem "rspec" end 

这是由docker-compose.yml的以下行引起的:

 volumes: - .:/usr/src/app 

gems安装在/usr/src/app/vendor/bundle ,但是你将当前目录挂载到docker-compose.yml中的/usr/src/app 。 所以你不能看到图像中的gem。

您需要更改束path或装载path。