gpt4 book ai didi

ruby - 如何在Alpine上使用错误的Ruby路径修复Docker

转载 作者:行者123 更新时间:2023-12-02 19:21:27 25 4
gpt4 key购买 nike

我有一个非常简单的容器,它在Google Cloud Run中运行Sinatra。由于Dockerfile中没有任何更改,它最近停止了工作。

当我尝试运行它时,出现错误:

/usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- sinatra (LoadError)
from /usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from main_wow.rb:1:in `<main>'

Dockerfile:
FROM ruby:2.6.4-alpine3.9

ENV APP_HOME /WOW

WORKDIR $APP_HOME

ADD Gemfile* $APP_HOME/

RUN gem install bundler
RUN bundle install

ADD main_wow.rb $APP_HOME
ADD views/ $APP_HOME/views

# Start server
ENV PORT 3000
EXPOSE 3000
CMD ["ruby", "main_wow.rb"]

gem 文件:
source "http://rubygems.org"

gem 'sinatra'
gem 'i18n'
main_wow.rb的前10行:
require "sinatra"
require "net/http"
require "json"
require "i18n"
I18n.config.available_locales = :en

configure do
set :public_folder, './views'
set :bind, '0.0.0.0'
end

据我了解,它正在尝试从主要版本2.6.0(而不是2.6.4)中获取 ruby gem 。
我已经尝试创建链接,以在Gemfile上设置 ruby 版本,但是似乎都无法正常工作...

最佳答案

经过几次猜测,我在Dockerfile的最后一行用bundle exec修复了它:

CMD ["bundle", "exec", "ruby", "main_wow.rb"]

关于ruby - 如何在Alpine上使用错误的Ruby路径修复Docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59395627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com