Запуск rails 5.x в докере, ошибка: Невозможно загрузить приложение: NameError: неинициализированная константа Bundler rails_1 - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь заставить rails 5.x работать с использованием docker.

Мой Dockerfile:

FROM ruby:2.5-alpine

RUN apk update && apk --update add \
 build-base \
 nodejs \
 postgresql-dev \
 tzdata \
 imagemagick

# yarn
ENV PATH=/root/.yarn/bin:$PATH
RUN apk add --virtual build-yarn curl && \
    touch ~/.bashrc && \
    curl -o- -L https://yarnpkg.com/install.sh | sh && \
    apk del build-yarn


RUN mkdir /app
WORKDIR /app

COPY Gemfile ./
RUN gem install bundler -v 2.0.1
RUN bundle install --binstubs

Мой файл docker-compose выглядит так:

docker-compose.yml

version: "3"

services: 

  rails:
    build: ../../railsapp
    volumes:
     - ../../railsapp:/app     
    ports:
      - "3000:3000"    
    command: puma -C config/puma.rb
    env_file:
      - '.env'
    restart: always 

В журналах докера есть эта ошибка:

rails_1 |Puma запускается в одиночном режиме ... rails_1 |* Версия 3.12.0 (ruby 2.5.3-p105), кодовое имя: Llamas in Pyjamas rails_1 |* Минимальное количество тем: 5, максимальное количество тем: 5 rails_1 |* Окружающая среда: производственные рельсы_1 |!Невозможно загрузить приложение: NameError: неинициализированная константа Bundler rails_1 |/app/config/application.rb:18:in <top (required)>': uninitialized constant Bundler (NameError) rails_1 | from /app/config/environment.rb:2:in require_relative 'rails_1 |из /app/config/environment.rb:2:in <top (required)>' rails_1 | from config.ru:3:in require_relative 'rails_1 |с config.ru:3:in block in <main>' rails_1 | from /usr/local/bundle/gems/rack-2.0.6/lib/rack/builder.rb:55:in instance_eval 'rails_1 |из /usr/local/bundle/gems/rack-2.0.6/lib/rack/builder.rb:55:in initialize' rails_1 | from config.ru:in new 'rails_1 |с config.ru:in <main>' rails_1 | from /usr/local/bundle/gems/rack-2.0.6/lib/rack/builder.rb:49:in eval 'rails_1 |из /usr/local/bundle/gems/rack-2.0.6/lib/rack/builder.rb:49:in new_from_string' rails_1 | from /usr/local/bundle/gems/rack-2.0.6/lib/rack/builder.rb:40:in parse_file 'rails_1 |из /usr/local/bundle/gems/puma-3.12.0/lib/puma/configuration.rb:318:in load_rackup' rails_1 | from /usr/local/bundle/gems/puma-3.12.0/lib/puma/configuration.rb:243:in app 'rails_1 |из /usr/local/bundle/gems/puma-3.12.0/lib/puma/runner.rb:145:in load_and_bind' rails_1 | from /usr/local/bundle/gems/puma-3.12.0/lib/puma/single.rb:96:in run 'rails_1 |из /usr/local/bundle/gems/puma-3.12.0/lib/puma/launcher.rb:184:in run' rails_1 | from /usr/local/bundle/gems/puma-3.12.0/lib/puma/cli.rb:78:in run 'rails_1 |из /usr/local/bundle/gems/puma-3.12.0/bin/puma:10:in <top (required)>' rails_1 | from /usr/local/bundle/bin/puma:23:in load 'rails_1 |from / usr / local / bundle / bin / puma: 23: in `'

Вот ошибки, которые я получал изначально:

  1. Сначала я получалошибка, говорящая, что я требовал, необходим bundler 2.0, поэтому я добавил это в свой Dockerfile.
  2. Затем я получил эту ошибку: «Невозможно загрузить приложение: Bundler :: GemNotFound: Не удалось найти bootsnap-1.4.0 в любом из источников ». Затем я вручную удалил гем из bootsnap из Gemfile и закомментировал файл config / boot.rb.

  3. Теперь я получил сообщение об ошибкевыше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...