为什么“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。