Почему «установка пакета» возвращает ошибку при создании моего хранилища докеров? - PullRequest
0 голосов
/ 19 октября 2019

Я учусь создавать приложение rails с помощью Docker, и каждый раз, когда я пытаюсь запустить $ docker-compose build web, я получаю следующую ошибку:

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

Это мой Dockerfile:

FROM ruby:2.5.1

ENV APP_HOME /usr/src/app
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev

# Node.js
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - \
&& apt-get install -y nodejs

RUN apt-get update && apt-get install -y curl apt-transport-https wget && \
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
apt-get update && apt-get install -y yarn

# SOURCE CODE

WORKDIR $APP_HOME

COPY . $APP_HOME/
RUN gem install bundler --version 2.0.2 --no-rdoc --no-ri
ADD Gemfile $APP_HOME/
ADD Gemfile.lock $APP_HOME/
RUN bundle install
RUN echo '--color' >> ~/.rspec

Это мой файл docker-compose.yml

version: '3'
services:
  db:
    image: postgres
  webpacker:
    build: .
    command: bundle exec bin/webpack-dev-server
    volumes:
      - .:/fancyapp
    ports:
      - "8080:8080"
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/fancyapp
    ports:
      - "3000:3000"
    depends_on:
      - db
      - webpacker

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

Ответы [ 2 ]

0 голосов
/ 20 октября 2019

Похоже, что в вашем Gemfile.lock написано, что вы используете bundler с версией выше 2. В этом случае вы можете использовать 2 способа:

  1. уменьшить вашу локальную версию

  2. добавить в строку вашего файла Docker gem install bundler (без версии). Он установит последний bundler

0 голосов
/ 19 октября 2019

Запустите команду gem list bundler, я думаю, ваша bundler версия меньше, чем версия 2.

Если это так, запустите gem install bundler -v 2.0.2, чтобы установить последнюю версию.

Вы можетезапустите gem install --default bundler -v 2.0.2, чтобы сделать его версией по умолчанию.

...