Как исправить включение ruby-bundler в concurrent-ruby на Alpine в Docker? - PullRequest
0 голосов
/ 05 октября 2019

Не уверен, относится ли проблема к concurrent-ruby или нет, но require не работает должным образом. Я немного в недоумении, как отладить это. Он работает, когда запускается как обычный пользователь вне Docker в Ubuntu. К сожалению, невозможно определить процесс внутри Docker, чтобы увидеть, где он расходится. Есть идеи?

Обновление: похоже, проблема связана с опцией --path ./vendor/bundle - она ​​работает без нее, не работает с ней.

FROM alpine:3.10.2
RUN apk add bash
SHELL ["/bin/bash", "-c"]
RUN apk add npm ruby-bundler
RUN mkdir /app
WORKDIR /app
RUN echo -e "source 'https://rubygems.org'\n\
gem 'concurrent-ruby', require: 'concurrent'\n" >> ./Gemfile
RUN bundle install --path ./vendor/bundle
RUN ruby -e 'require("concurrent")'

Выходы:

Step 9/9 : RUN ruby -e 'require("concurrent")'
 ---> Running in efbb0ed5794f
/usr/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require': cannot load such file -- concurrent (LoadError)
    from /usr/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    from -e:1:in `<main>'
The command '/bin/bash -c ruby -e 'require("concurrent")'' returned a non-zero code: 1

1 Ответ

0 голосов
/ 05 октября 2019

Обнаружил проблему, нужно использовать bundle exec для запуска приложения ruby, которое будет выполнять операцию require.

...