Docker COPY не смог найти Gemfile: такого файла или каталога нет - PullRequest
0 голосов
/ 06 июля 2018

В настоящее время я работаю над настройкой шаблона Rails через докер. Когда я пытаюсь запустить docker build ., я получаю следующую ошибку:

Step 5/8 : COPY Gemfile /app/
COPY failed: stat /var/lib/docker/tmp/docker-builder090950451/Gemfile: no such file or directory

Я следую указаниям в документации , но все еще не смог создать образ.

Вот мой Dockerfile

FROM ruby:2.5
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs

WORKDIR /app

# Copy the existing Gemfile
COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock

# Install Gems
RUN bundle install
COPY . /app

У меня также есть следующий docker-compose.yml файл:

version: '3'
services:
  db:
    image: postgres # To Edit - Default is postgresql.
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/app
    ports:
      - "3000:3000"
    depends_on:
      - db

Я сгенерировал приложение Rails, запустив docker-compose run web rails new app --force --database=postgresql, который генерирует приложение rails с его Gemfile, как показано на рисунке ниже. enter image description here

Однако после создания приложения rails и запуска docker-compose build я получаю следующую ошибку:

db uses an image, skipping
Building web
Step 1/7 : FROM ruby:2.5
 ---> 55fb4a37704e
Step 2/7 : RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
 ---> Using cache
 ---> afb6f347904c
Step 3/7 : WORKDIR /app
 ---> Using cache
 ---> 1fdbd260685d
Step 4/7 : COPY Gemfile /app/Gemfile
ERROR: Service 'web' failed to build: COPY failed: stat /var/lib/docker/tmp/docker-builder885442968/Gemfile: no such file or directory

1 Ответ

0 голосов
/ 06 июля 2018

Проблема в том, что я назвал каталог контейнера и каталог приложения одинаковыми app, что привело к проблемам с отсутствием поиска Gemfile.

Я обновил Dockerfile до:

FROM ruby:2.5
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs

WORKDIR /webapp

COPY ./app/Gemfile /webapp/Gemfile
COPY ./app/Gemfile.lock /webapp/Gemfile.lock

RUN cd /webapp && bundle install
ADD . /webapp

и в docker-compose.yml я изменил volumes на:

volumes:
      - .:/webapp

Это только в том случае, если вы хотите, чтобы приложение Rails было автономным, а файлы Docker находились вне приложения rails.

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