运行 Rails 应用程序在 docker 容器中
Running Rails application in docker container
我想在 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.
当我 运行 捆绑安装时出现此错误:
Gem::Ext::BuildError: 错误:无法构建 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.
怎么了?我现在可以做什么?
我遇到了同样的错误。这个错误是因为我们使用的 ruby 软件(gems)的版本在某些时候不匹配。
您正在使用 ruby 版本 2.2.1。您的 Gemfile 包含旧版本的 gem,它依赖于 json 版本 1.7.7.
您应该安装以下 ruby 版本:
ruby-1.9.3-p448
消除错误,或者更新与 ruby 版本 2.2.1 兼容的 gem 即可解决问题。
docker-rails 是我刚刚创建的一个项目,目的是使 rails 与 docker(和 CI) 非常容易。我认为它可以帮助您减少在 docker.
上启动和 运行 rails 所需的配置量
它创建一个全局共享 gem 卷(以加速捆绑器),并有一个示例 Dockerfile 供使用。
考虑到本机错误,我猜您的 Dockerfile 缺少所需的包,您可能需要更新 apt-get
语句。
我想在 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.
当我 运行 捆绑安装时出现此错误:
Gem::Ext::BuildError: 错误:无法构建 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.
怎么了?我现在可以做什么?
我遇到了同样的错误。这个错误是因为我们使用的 ruby 软件(gems)的版本在某些时候不匹配。
您正在使用 ruby 版本 2.2.1。您的 Gemfile 包含旧版本的 gem,它依赖于 json 版本 1.7.7.
您应该安装以下 ruby 版本:
ruby-1.9.3-p448
消除错误,或者更新与 ruby 版本 2.2.1 兼容的 gem 即可解决问题。
docker-rails 是我刚刚创建的一个项目,目的是使 rails 与 docker(和 CI) 非常容易。我认为它可以帮助您减少在 docker.
上启动和 运行 rails 所需的配置量它创建一个全局共享 gem 卷(以加速捆绑器),并有一个示例 Dockerfile 供使用。
考虑到本机错误,我猜您的 Dockerfile 缺少所需的包,您可能需要更新 apt-get
语句。