如何修复 ruby-bundler include of concurrent-ruby on Alpine in Docker?

How to fix ruby-bundler include of concurrent-ruby on Alpine in Docker?

不确定问题是否特定于 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

发现问题,需要使用 bundle exec 启动 ruby 应用程序来执行 require 操作。