Docker Ruby Bundler не устанавливается - PullRequest
0 голосов
/ 15 апреля 2020

Мой Dockerfile выглядит следующим образом:

FROM ruby:2.5-alpine

RUN apk update add --no-cache build-base nodejs postgresql-dev

RUN mkdir /my-app
WORKDIR /my-app

COPY Gemfile Gemfile.lock ./
RUN bundle install --binstubs

COPY . .

CMD puma -C config/puma.rb

Теперь, когда я пытаюсь создать образ, он выдает следующую ошибку:

You must use Bundler 2 or greater with this lockfile.
The command '/bin/sh -c bundle install --binstubs' returned a non-zero code: 20

Используемая версия пакета Gemfile.lock - 2.1 +0,4. Я попытался добавить следующую строку в Dockerfile:

RUN gem update --system
RUN gem install bundler -v 2.1.4

В этом случае я получаю следующую ошибку:

ERROR:  Could not find a valid gem 'bundler' (= 2.1.4), here is why:
          Unable to download data from https://rubygems.org/ - no such name (https://rubygems.org/specs.4.8.gz)

Я использую систему Ubuntu 18.04. Кто-нибудь сталкивался с этой проблемой раньше? Любая помощь приветствуется.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020
FROM ruby:2.5-alpine

RUN apk update add --no-cache build-base nodejs postgresql-dev

RUN mkdir /my-app
WORKDIR /my-app

RUN gem update --system
RUN gem install bundler -v 2.1.4
COPY Gemfile Gemfile.lock ./
RUN bundle install --binstubs

COPY . .

CMD puma -C config/puma.rb

Итак, установка упаковщика прошла нормально, но из-за IPV6 на rubygems.org все еще не работает и возникает проблема при загрузке внутри docker. Итак, я выполнил команду, используя хост-сеть.

docker image build --network=host -t my-app .

И эта проблема была решена.

Спасибо, что нашли время.

0 голосов
/ 15 апреля 2020

Мне нужно создать ответ, так как я не могу опубликовать все это в комментарии. Я понимаю, что это не решение для вас.

Если я использую эту настройку, она запускается без ошибок. Подскажите пожалуйста, чем он отличается от ваших настроек и тестов? (пожалуйста, добавьте это к вопросу)

dockerfile

FROM ruby:2.5-alpine

RUN apk update add --no-cache build-base nodejs postgresql-dev

RUN mkdir /my-app
WORKDIR /my-app

RUN gem update --system && gem install bundler && bundle --version 
# installs bundler 2.1.4

COPY Gemfile Gemfile.lock ./
RUN bundle install

COPY . .

CMD /bin/sh

Gemfile

ruby '2.5.8'
source 'https://rubygems.org'
gem 'flay'

Gemfile.lock

GEM
  remote: https://rubygems.org/
  specs:
    erubis (2.7.0)
    flay (2.12.0)
      erubis (~> 2.7.0)
      path_expander (~> 1.0)
      ruby_parser (~> 3.0)
      sexp_processor (~> 4.0)
    path_expander (1.0.3)
    ruby_parser (3.13.1)
      sexp_processor (~> 4.9)
    sexp_processor (4.12.0)

PLATFORMS
  ruby

DEPENDENCIES
  flay

RUBY VERSION
   ruby 2.5.8p224

BUNDLED WITH
   2.1.4

Сборка и запуск с:

docker build . --no-cache -t foobar
docker run --it foobar
...