Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails Docker容器中的捆绑安装失败_Ruby On Rails_Docker_Rubygems_Bundler - Fatal编程技术网

Ruby on rails Rails Docker容器中的捆绑安装失败

Ruby on rails Rails Docker容器中的捆绑安装失败,ruby-on-rails,docker,rubygems,bundler,Ruby On Rails,Docker,Rubygems,Bundler,部署docker容器时遇到问题,主要原因是bundler无法执行其install命令。使用passenger在本地运行bundle install似乎工作正常,只有部署过程在设置gems时会导致问题 我对Docker比较陌生,我不会称自己为Rails专家。这就是说,我很难理解bundler是如何以这种方式(尤其是与Docker一起)把整个事情搞砸的 我用的是乘客码头基地的图片,如果有任何关联的话 这是我的Gemfile: gem 'doorkeeper' gem 'doorkeeper-jwt'

部署docker容器时遇到问题,主要原因是
bundler
无法执行其
install
命令。使用
passenger
在本地运行
bundle install
似乎工作正常,只有部署过程在设置gems时会导致问题

我对
Docker
比较陌生,我不会称自己为
Rails
专家。这就是说,我很难理解
bundler
是如何以这种方式(尤其是与
Docker
一起)把整个事情搞砸的

我用的是乘客码头基地的图片,如果有任何关联的话

这是我的
Gemfile

gem 'doorkeeper'
gem 'doorkeeper-jwt'
gem 'aws-sdk-rails'
gem 'rack-cors', :require => 'rack/cors'
gem 'active_model_serializers', github: 'rails-api/active_model_serializers'
gem 'passenger'
gem 'rails', '4.2.6'
gem 'rails-api'
gem 'pg'
gem 'devise'
gem 'schema_plus'
gem 'pusher'
gem 'sdoc', '~> 0.4.0', group: :doc

group :development, :test do

  gem 'byebug'
  gem 'web-console', '~> 2.0'
  gem 'spring'
  gem 'rspec-rails'
  gem 'factory_girl_rails', '~> 4.0'
  gem 'database_cleaner'

end
RUN mkdir /home/app/myapp
WORKDIR /home/app/myapp

COPY Gemfile /home/app/myapp/
COPY Gemfile.lock /home/app/myapp/
RUN chown -R app:app /home/app/myapp
RUN sudo -u app bundle install --deployment --verbose --path vendor/cache

ADD . /home/app/myapp
RUN chown -R app:app /home/app/myapp
这是
Dockerfile的(部分)

gem 'doorkeeper'
gem 'doorkeeper-jwt'
gem 'aws-sdk-rails'
gem 'rack-cors', :require => 'rack/cors'
gem 'active_model_serializers', github: 'rails-api/active_model_serializers'
gem 'passenger'
gem 'rails', '4.2.6'
gem 'rails-api'
gem 'pg'
gem 'devise'
gem 'schema_plus'
gem 'pusher'
gem 'sdoc', '~> 0.4.0', group: :doc

group :development, :test do

  gem 'byebug'
  gem 'web-console', '~> 2.0'
  gem 'spring'
  gem 'rspec-rails'
  gem 'factory_girl_rails', '~> 4.0'
  gem 'database_cleaner'

end
RUN mkdir /home/app/myapp
WORKDIR /home/app/myapp

COPY Gemfile /home/app/myapp/
COPY Gemfile.lock /home/app/myapp/
RUN chown -R app:app /home/app/myapp
RUN sudo -u app bundle install --deployment --verbose --path vendor/cache

ADD . /home/app/myapp
RUN chown -R app:app /home/app/myapp
当我尝试部署时,会出现以下错误:

来自应用程序的消息:看起来Bundler无法找到 宝石也许您没有安装此应用程序所需的所有gems 需要。要安装gems,请运行:

捆绑安装

如果这不起作用,那么问题可能是由您的 应用程序在不同于预期的环境下运行 到请检查以下内容:

  • 此应用程序是否应作为
    应用程序运行
    用户?
  • 此应用程序是否在正确的Ruby上运行 口译译员下面你会 查看乘客试图使用的Ruby解释器。
  • --------异常情况如下:-----

    找不到 rake-11.1.2在任何来源中(Bundler::GemNotFound) /var/lib/gems/2.1.0/gems/bundler-1.10.6/lib/bundler/spec_set.rb:92:in
    block in materialize'
    /var/lib/gems/2.1.0/gems/bundler-1.10.6/lib/bundler/spec_set.rb:85:in
    map!'
    /var/lib/gems/2.1.0/gems/bundler-1.10.6/lib/bundler/spec_set.rb:85:in
    materialize'
    /var/lib/gems/2.1.0/gems/bundler-1.10.6/lib/bundler/definition.rb:140:in
    specs'
    /var/lib/gems/2.1.0/gems/bundler-1.10.6/lib/bundler/definition.rb:185:in
    specs_for'
    /var/lib/gems/2.1.0/gems/bundler-1.10.6/lib/bundler/definition.rb:174:in
    requested_specs'
    /var/lib/gems/2.1.0/gems/bundler-1.10.6/lib/bundler/environment.rb:18:in
    requested_specs'
    /var/lib/gems/2.1.0/gems/bundler-1.10.6/lib/bundler/runtime.rb:13:in
    setup'
    /var/lib/gems/2.1.0/gems/bundler-1.10.6/lib/bundler.rb:127:in
    setup'
    /var/lib/gems/2.1.0/gems/bundler-1.10.6/lib/bundler/setup.rb:18:in
    <top (required)>'
    /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in
    require&#39;
    /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in
    require'
    /usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:430:in
    activate_gem&#39;
    /usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:297:in
    block in run_load_path_setup_code'
    /usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:435:in
    running_bundler&#39;
    /usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:296:in
    run_load_path_setup_code'
    /usr/share/passenger/helper-scripts/rack-preloader.rb:100:in
    preload_app&#39;
    /usr/share/passenger/helper-scripts/rack-preloader.rb:156:in
    <module:App>'
    /usr/share/passenger/helper-scripts/rack-preloader.rb:30:in
    &lt;module:PhusionPassenger&gt;&#39;
    /usr/share/passenger/helper-scripts/rack-preloader.rb:29:in
    <main>' /var/lib/gems/2.1.0/gems/bundler-1.10.6/lib/bundler/spec_set.rb:92:in 物化中的
    块&39
    /var/lib/gems/2.1.0/gems/bundler-1.10.6/lib/bundler/spec_set.rb:85:in
    map!'
    /var/lib/gems/2.1.0/gems/bundler-1.10.6/lib/bundler/spec_set.rb:85:in
    具体化&39
    /var/lib/gems/2.1.0/gems/bundler-1.10.6/lib/bundler/definition.rb:140:in
    specs'
    /var/lib/gems/2.1.0/gems/bundler-1.10.6/lib/bundler/definition.rb:185:in &39的规范
    /var/lib/gems/2.1.0/gems/bundler-1.10.6/lib/bundler/definition.rb:174:in
    要求的规格'
    /var/lib/gems/2.1.0/gems/bundler-1.10.6/lib/bundler/environment.rb:18:in
    要求的规格&39
    /var/lib/gems/2.1.0/gems/bundler-1.10.6/lib/bundler/runtime.rb:13:in
    setup'
    /var/lib/gems/2.1.0/gems/bundler-1.10.6/lib/bundler.rb:127:in
    setup'
    /var/lib/gems/2.1.0/gems/bundler-1.10.6/lib/bundler/setup.rb:18:in

    /usr/lib/ruby/2.1.0/rubygems/core\u ext/kernel\u require.rb:55:in
    require'
    /usr/lib/ruby/2.1.0/rubygems/core\u ext/kernel\u require.rb:55:in
    require'
    /usr/lib/ruby/vendor\u ruby/phusion\u passenger/loader\u shared\u helpers.rb:430:in
    激活gem&39
    /usr/lib/ruby/vendor\u ruby/phusion\u passenger/loader\u shared\u helpers.rb:297:in
    在运行中阻塞\u加载\u路径\u设置\u代码'
    /usr/lib/ruby/vendor\u ruby/phusion\u passenger/loader\u shared\u helpers.rb:435:in
    运行bundler&39
    /usr/lib/ruby/vendor\u ruby/phusion\u passenger/loader\u shared\u helpers.rb:296:in
    run\u load\u path\u setup\u code'
    /usr/share/passenger/helper脚本/rack preload.rb:100:in
    预加载应用程序&39
    /usr/share/passenger/helper脚本/rack preload.rb:156:in

    /usr/share/passenger/helper脚本/rack preload.rb:30:in
    模块:PhusionPassenger和#39
    /usr/share/passenger/helper脚本/rack preload.rb:29:in
    '


    这里的变量太多了。您的问题中不清楚“部署”是什么意思?“当我尝试部署时”--这是类似于
    docker run…
    还是
    docker compose…
    ?或者是Heroku/AWS/DigitalOcean/CF类型的推送?您是本地运行Docker、boot2Docker还是远程运行Docker

    通常,是否可能在容器内没有出站连接?你有代理人吗?如果是这样的话,同样的代理设置可能需要在容器中进行——如何进行取决于代理设置和Docker的具体情况

    如果您能够将任何网络工具的安装添加到docker文件中,请尝试类似于
    docker exec curl rubygems.org
    (或者如果您没有运行的容器,
    docker run curl rubygems.org

    希望这能帮助你朝着正确的方向开始