Не удалось установить Rails Bundle с Docker - PullRequest
0 голосов
/ 11 сентября 2018

Я попытался установить Rails с помощью Docker, я получил следующую ошибку

Installing websocket-driver 0.6.5 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory:
/usr/local/bundle/gems/websocket-driver-0.6.5/ext/websocket-driver
/usr/local/bin/ruby -r ./siteconf20180911-15-1atjs2q.rb extconf.rb
Cannot allocate memory - /usr/local/bin/ruby -r ./siteconf20180911-15-1atjs2q.rb
extconf.rb 2>&1

Gem files will remain installed in /usr/local/bundle/gems/websocket-driver-0.6.5
for inspection.
Results logged to
/usr/local/bundle/extensions/x86_64-linux/2.5.0/websocket-driver-0.6.5/gem_make.out

An error occurred while installing websocket-driver (0.6.5), and Bundler cannot
continue.
Make sure that `gem install websocket-driver -v '0.6.5' --source
'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  rails was resolved to 5.1.6, which depends on
    actioncable was resolved to 5.1.6, which depends on
      websocket-driver

Здесь мой файл Docker

FROM ruby:latest

RUN apt-get -y update && apt-get install -y curl

RUN curl -sL https://deb.nodesource.com/setup_8.x | bash -

RUN apt-get -y update && apt-get -y install nodejs

RUN mkdir -p /app

WORKDIR /app

COPY . /app

RUN gem install rails

RUN  /app/bin/setup

RUN chmod -R 755 /app

EXPOSE 3000

CMD ["bundle", "exec", "puma", "-C", "config/puma.rb","-e","alpha"]

Я попытался установить на свой компьютер Mac, он работает хорошо.Я купил новый сервер Ubuntu 16.04 из цифрового океана и попробуйте установить тот же.Я получил эту ошибку.Я использую Docker версии 18.03.1-ce, сборка 9ee9f40.

В моем приложении / bin / setup я запускаю команды ниже

#!/usr/bin/env ruby
require 'pathname'
require 'fileutils'
include FileUtils

# path to your application root.
APP_ROOT = Pathname.new File.expand_path('../../', __FILE__)

def system!(*args)
  system(*args) || abort("\n== Command #{args} failed ==")
end

chdir APP_ROOT do
  # This script is a starting point to setup your application.
  # Add necessary setup steps to this file.

  puts '== Installing dependencies =='
  system! 'gem install bundler --conservative'
  system('bundle check') || system!('bundle install')

  puts "\n== Removing old tempfiles =="
  system! 'bin/rails tmp:clear'

  puts "\n== Precompiling Assets =="
  system! 'bin/rails assets:precompile'

  puts "\n== Restarting application server =="
  system! 'bin/rails restart'
end

Я пытался с ruby: latest, ruby: 2.4.1 ничего не работает.

После нескольких предложений я добавил sudo apt-get install ruby-dev в свой Dockerfile, но это также не работает

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Использовать альпийскую версию ruby. Это займет гораздо меньше места. Например: FROM ruby:2.5.1-alpine

0 голосов
/ 11 сентября 2018

Невозможно выделить память - / usr / local / bin / ruby ​​-r ./siteconf20180911-15-1atjs2q.rb extconf.rb 2> & 1

Эта строка указывает, что ваш DigitalУ Ocean droplet недостаточно оперативной памяти для построения ваших зависимостей, и поэтому сборка докера не удалась.

У меня возникла та же проблема, и, к сожалению, вам просто нужно больше ресурсов.

В качестве альтернативы вы можете собратьизображение, пометьте и отправьте его в хранилище Docker, затем потяните и запустите его на капле DO, чтобы избежать шага сборки.

...