在 alpine-3.7 docker 镜像中捆绑安装时出现 `Gem::Ext::BuildError: ERROR: Failed to build gem native extension` 错误

Shr*_*thy 4 ruby rubygems docker alpine-linux

我使用 alpine-3.7 和 ruby​​-2.5 (bundler-2.1.2) 创建了一个 docker 映像。在安装 ruby​​ gems 时,使用bundle install,我收到以下错误。

Fetching jaro_winkler 1.5.2
Installing jaro_winkler 1.5.2 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
An error occurred while installing jaro_winkler (1.5.2), and Bundler cannot continue.
Make sure that `gem install jaro_winkler -v '1.5.2' --source 'https://testrepos.net/api/gems/rubygems/'` succeeds before bundling
Run Code Online (Sandbox Code Playgroud)

我也尝试过gem install jaro_winkler -v '1.5.2' --source 'https://testrepos.net/api/gems/rubygems/',但出现以下错误。

Fetching jaro_winkler-1.5.2.gem
Building native extensions. This could take a while...
ERROR:  Error installing jaro_winkler:
ERROR: Failed to build gem native extension.
Run Code Online (Sandbox Code Playgroud)

Shr*_*thy 8

添加RUN apk update && apk add --virtual build-dependencies build-base到docker文件然后运行bundle install解决了问题。

# below line is just an example, and it might not work for you, use the correct repo name and image name
FROM testrepos.net/ruby:2.5-alpine3.7
RUN apk add --no-cache bash
RUN /bin/sh
RUN apk update && apk add --virtual build-dependencies build-base
RUN gem install bundler
RUN bundle install
Run Code Online (Sandbox Code Playgroud)