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

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

我有一个非常简单的容器,它在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版本,但是似乎没有任何工作...

ruby docker sinatra google-cloud-run
1个回答
0
投票

经过几次猜测,我在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
© www.soinside.com 2019 - 2024. All rights reserved.