我有一个非常简单的容器,它在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"]
Gemfile:
source "http://rubygems.org"
gem 'sinatra'
gem 'i18n'
[C0的前10行:
main_wow.rb
据我所知,它正在尝试从主要版本2.6.0(而不是2.6.4)中获取红宝石宝石。我已经尝试创建一个链接,以在Gemfile上设置Ruby版本,但是似乎没有任何工作...
经过几次猜测,我在Dockerfile的最后一行用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
修复了它:
bundle exec