Как настроить ruby ​​на Docker - ошибка nokogiri - PullRequest
0 голосов
/ 14 апреля 2019

Мой Док Докфайл имеет ОТ Ubuntu: 18.04

Я хочу использовать ruby, поэтому я сделал

gem install bundler

Однако, когда я пытаюсь

bundle

, я получаюошибка с нокогири

Installing nokogiri 1.10.2 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /var/lib/gems/2.5.0/gems/nokogiri-1.10.2/ext/nokogiri
/usr/bin/ruby2.5 -r ./siteconf20190414-288-1mfprtc.rb extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h

extconf failed, exit code 1

Gem files will remain installed in /var/lib/gems/2.5.0/gems/nokogiri-1.10.2 for inspection.
Results logged to /var/lib/gems/2.5.0/extensions/x86_64-linux/2.5.0/nokogiri-1.10.2/gem_make.out

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

1 Ответ

1 голос
/ 14 апреля 2019

У вас есть зависимость, называемая nokogiri, которая имеет внешнюю зависимость, обычно это libxml и libxslt.

Все, что вам нужно сделать, это apt get install libxml2-dev libxslt1-dev

Вот рабочий пример Ruby Dockerfile

FROM ruby:2.6.2

RUN apt-get update -qq && apt-get install -y build-essential
RUN apt-get install -y libxml2-dev libxslt1-dev

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY Gemfile* /usr/src/app/
RUN bundle install -j3

ADD . /usr/src/app

ENTRYPOINT ["bundle", "exec"]
CMD ["rails", "server"]
...