Docker - ruby​​,nokogiri - 安装nokogiri时出错(1.10.2),

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (166)

使用docker并尝试构建图像,但由于nokogiri gem问题,我在捆绑时遇到上述错误

我的Docker文件是

RUN apt update
RUN apt install -y ruby
RUN gem install bundler
RUN cd /usr/src/app
WORKDIR /web
ADD Gemfile /web/
RUN bundle

但是,当RUN bundle在最后^我得到以下错误:

...
Fetching mini_portile2 2.4.0                                                                                                                                              
Installing mini_portile2 2.4.0                                                                                                                                            
Fetching nokogiri 1.10.2                                                                                                                                                  
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-8-1rrc2i8.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.                                                                                                                         

In Gemfile:                                                                                                                                                               
  capybara was resolved to 3.16.2, which depends on
    xpath was resolved to 3.2.0, which depends on
      nokogiri
The command '/bin/sh -c bundle' returned a non-zero code: 5
提问于
用户回答回答于

将以下行添加到Dockerfile,它将处理依赖项

RUN apt install -y build-essential patch ruby-dev zlib1g-dev liblzma-dev

就在RUN bundle命令之前

然后再次运行构建

docker build -t dock .

...
Fetching nokogiri 1.10.2  
Installing nokogiri 1.10.2 with native extensions  
Fetching rack 2.0.7  
Installing rack 2.0.7  
...
Bundle complete! 7 Gemfile dependencies, 33 gems now installed.  
Use `bundle info [gemname]` to see where a bundled gem is installed.  
Removing intermediate container 146ce309d0a5           
 ---> cd36c7c1e577
Successfully built cd36c7c1e577
Successfully tagged dock:latest

...

感谢https://nokogiri.org/tutorials/installing_nokogiri.html进行此查找。

扫码关注云+社区

领取腾讯云代金券