如何在Docker的Alpine上修复并发红宝石的ruby-bundler include?

问题描述 投票:-1回答:1

不确定该问题是否特定于concurrent-ruby,但require不能按预期工作。我有点不知道如何调试它。在Ubuntu上以普通用户的身份在Docker外部运行时,它可以工作。不幸的是,不可能在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
ruby docker bundler
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.