Я пытаюсь заставить 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 `'
Вот ошибки, которые я получал изначально:
- Сначала я получалошибка, говорящая, что я требовал, необходим bundler 2.0, поэтому я добавил это в свой Dockerfile.
Затем я получил эту ошибку: «Невозможно загрузить приложение: Bundler :: GemNotFound: Не удалось найти bootsnap-1.4.0 в любом из источников ». Затем я вручную удалил гем из bootsnap из Gemfile и закомментировал файл config / boot.rb.
Теперь я получил сообщение об ошибкевыше.