Rails не запускается в docker

#ruby-on-rails #docker #docker-compose #dockerfile

#ruby-on-rails #docker #docker-compose #dockerfile

Вопрос:

Я пытаюсь настроить свое приложение rails для запуска с помощью docker. Он продолжает сбой с Could not find rake-12.3.2 in any of the sources (Bundler::GemNotFound)

Dockerfile

 FROM ruby:2.6.1

RUN apt-get update -yqq amp;amp; 
  apt-get install -yqq --no-install-recommends 
  nodejs 
  nano

COPY Gemfile* /usr/src/app/
WORKDIR /usr/src/app
RUN bundle install
RUN gem install foreman
RUN gem install rake -v 12.3.2

COPY . /usr/src/app/

CMD [ "bin/rails", "s", "-b", "0.0.0.0" ]
  

.docker-compose.yml

 version: '3'

services:
  postgres:
    image: 'postgres:10.3-alpine'
    volumes:
      - 'postgres:/var/lib/postgresql/data'
    env_file:
      - '.env'

  redis:
    image: 'redis:4.0-alpine'
    command: redis-server --requirepass yourpassword
    volumes:
      - 'redis:/data'

  rails:
    depends_on:
      - 'postgres'
      - 'redis'
    build: .
    ports:
      - '3000:3000'
    volumes:
      - '.:/usr/src/app'
    env_file:
      - '.env'

volumes:
  redis:
  postgres:
  

config/boot.rb

 ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)

require 'bundler/setup' # Set up gems listed in the Gemfile.
require 'bootsnap/setup' if RUBY_PLATFORM =~ /darwin/
  

журнал

 rails_1     | /usr/local/lib/ruby/site_ruby/2.6.0/bundler/spec_set.rb:91:in `block in materialize': Could not find rake-12.3.2 in any of the sources (Bundler::GemNotFound)
rails_1     |   from /usr/local/lib/ruby/site_ruby/2.6.0/bundler/spec_set.rb:85:in `map!'
rails_1     |   from /usr/local/lib/ruby/site_ruby/2.6.0/bundler/spec_set.rb:85:in `materialize'
rails_1     |   from /usr/local/lib/ruby/site_ruby/2.6.0/bundler/definition.rb:170:in `specs'
rails_1     |   from /usr/local/lib/ruby/site_ruby/2.6.0/bundler/definition.rb:237:in `specs_for'
rails_1     |   from /usr/local/lib/ruby/site_ruby/2.6.0/bundler/definition.rb:226:in `requested_specs'
rails_1     |   from /usr/local/lib/ruby/site_ruby/2.6.0/bundler/runtime.rb:108:in `block in definition_method'
rails_1     |   from /usr/local/lib/ruby/site_ruby/2.6.0/bundler/runtime.rb:20:in `setup'
rails_1     |   from /usr/local/lib/ruby/site_ruby/2.6.0/bundler.rb:107:in `setup'
rails_1     |   from /usr/local/lib/ruby/site_ruby/2.6.0/bundler/setup.rb:20:in `<top (required)>'
rails_1     |   from /usr/local/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
rails_1     |   from /usr/local/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
rails_1     |   from /usr/src/app/config/boot.rb:3:in `<top (required)>'
rails_1     |   from bin/rails:3:in `require_relative'
rails_1     |   from bin/rails:3:in `<main>'
  

Комментарии:

1. Несколько дней назад у меня была такая же проблема. gem list | grep rake и удалите бесполезную версию, но также лучше удалить gemfile.lock и связать новую. Поскольку я имел дело с ruby 2.3.0, мне пришлось вручную установить старую версию rake в gem file *.

Ответ №1:

Похоже, вы пытаетесь удалить текущую последнюю версию rake. Вы можете удалить объявление версии и разрешить ему автоматическое разрешение в этом случае.

По какой-либо причине этой зависимости нет в вашем Gemfile? Кроме того, приложение rails, которое вы запускаете, будет включать зависимость от rake. Вам не нужно устанавливать rake.

Комментарии:

1. Я добавил эту строку, пытаясь исправить ошибку, но это не помогло.

2. Удаление исправило это. Должно быть, так, как я кэшировал драгоценные камни ранее