【问题标题】:Running Rails application in docker container在 docker 容器中运行 Rails 应用程序
【发布时间】:2015-10-01 01:08:20
【问题描述】:

我想在 debian 机器上的 docker 容器中运行 Rails 4.2.1 应用程序。

当我运行 bundle exec rails s 时出现此错误:

Could not find json-1.7.7 in any of the sources
Run `bundle install` to install missing gems.

当我运行 bundle install 时,我得到了这个错误:

Gem::Ext::BuildError: ERROR: 未能构建 gem 原生扩展。

/usr/local/rvm/rubies/ruby-2.2.1/bin/ruby -r ./siteconf20150604-137-10l84fa.                                                                                              rb extconf.rb
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling generator.c
In file included from generator.c:1:0:
../fbuffer/fbuffer.h: In function 'fbuffer_to_s':
../fbuffer/fbuffer.h:175:47: error: macro "rb_str_new" requires 2 arguments,    but                                                                                                only 1 given
 VALUE result = rb_str_new(FBUFFER_PAIR(fb));
                                           ^
../fbuffer/fbuffer.h:175:20: warning: initialization makes integer from pointer                                                                                             without a cast
 VALUE result = rb_str_new(FBUFFER_PAIR(fb));
                ^
 Makefile:237: recipe for target 'generator.o' failed
  make: *** [generator.o] Error 1

  make failed, exit code 2

 Gem files will remain installed in /var/www/test/xyz/vendor/bundle/ruby/2                                                                                              .2.0/gems/json-1.7.7 for inspection.
Results logged to /var/www/test/xyz/vendor/bundle/ruby/2.2.0/extensions/x                                                                                                86_64-linux/2.2.0/json-1.7.7/gem_make.out
An error occurred while installing json (1.7.7), and Bundler cannot continue.
Make sure that `gem install json -v '1.7.7'` succeeds before bundling.

怎么了?我现在能做什么?

【问题讨论】:

  • 你能不能先试试gem install json -v '1.7.7'
  • 你能展示一个复制器,你的 Dockerfile 和更多数据吗?
  • @AnantKolvankar 我收到此错误:错误:执行 gem ... (Gem::FilePermissionError) 您没有 /usr/local/rvm/gems/ruby-2.2 的写入权限.1 目录。没有 dockerfile 我正在使用默认的 debian docker 容器。
  • 我认为你的 docker 容器有问题
  • 什么问题?

标签: ruby-on-rails ruby linux docker debian


【解决方案1】:

docker-rails 是我刚刚创建的一个项目,用于使用 docker(和 CI)制作 Rails 非常简单。我认为它可以帮助您并减少在 docker 上使用 rails 启动和运行所需的配置量。

它创建了一个全局共享的 gem 卷(以加快打包程序的速度),并有一个示例 Dockerfile 供使用。

鉴于本机错误,我猜您的 Dockerfile 缺少所需的包,您可能需要更新您的 apt-get 语句。

【讨论】:

    【解决方案2】:

    我遇到了同样的错误。这个错误是因为我们使用的 ruby​​ 软件(gems)的版本在某些时候不匹配。

    您使用的是 ruby​​ 版本 2.2.1。您的 Gemfile 包含旧版本的 gem,它依赖于 json 版本 1.7.7。

    您应该安装以下 ruby​​ 版本:

    ruby-1.9.3-p448
    

    要消除错误,或者更新与 ruby​​ 版本 2.2.1 兼容的 gem 即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      • 2017-11-18
      • 2018-05-04
      • 2015-05-13
      相关资源
      最近更新 更多