docker-compose не может найти gemfile в комплекте - PullRequest
0 голосов
/ 21 февраля 2019

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

docker-compose run app bundle exec rake db:setup

, я получаю

Starting joatu-db           ... done
Starting joatu-v2_bundler_1 ... done
/joatu/Gemfile not found

Я пытался связать его, используя:

docker-compose run app bundle install

, и я получаю

Starting joatu-v2_bundler_1 ... done 
Starting joatu-db           ... done

[!] There was an error parsing `Gemfile`: No such file or directory @ rb_sysopen - /joatu/Gemfile. Bundler cannot continue.

Я использую Windows 10 версии 1809

и запускаю ее на WSL: Ubuntu 18.04

Версия Docker: механизм докера 18.09

Версия Docker Compose: 1.24.0 rc-1

Файл Docker:

FROM ruby:2.4.5

MAINTAINER Robert JJ Smith <rsmithlal@gmail.com>

RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs libssl-dev

RUN mkdir /joatu
WORKDIR /joatu
COPY Gemfile /joatu/Gemfile
COPY Gemfile.lock /joatu/Gemfile.lock

# Use a persistent volume for the gems installed by the bundler
ENV BUNDLE_GEMFILE=/joatu/Gemfile \
  BUNDLE_JOBS=2 \
  BUNDLE_PATH=/bundler \
  GEM_PATH=/bundler \
  GEM_HOME=/bundler

#RUN gem install bundler #tried with it and without it same error
RUN bundle install

COPY . /joatu

docker-compose.yml

version: '2.1'

volumes:
  db-data:

services:
  app:
    container_name: joatu-app
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - $PWD:/joatu
    volumes_from:
      - bundler
    ports:
      - "3000:3000"
    depends_on:
      - db
    links:
      - db
    env_file:
      - './docker/.env.app.conf'
  db:
    container_name: joatu-db
    volumes:
      - db-data:/var/lib/postgresql/data
    image: mdillon/postgis:latest
    ports:
      - 5432:5432
    env_file:
      - './docker/.env.app.conf'
  bundler:
    image: busybox
    volumes:
      - /bundler

Я изменил . на $PWD иеще раз, чтобы попытаться «снять маску», и она все еще не работает.

Я переместился в разные папки в окнах, чтобы увидеть, была ли это проблема с разрешениями.Это все еще не сработало.И я удалил изображение и перестроил его, чтобы убедиться, что старое изображение не перепутало изменения.

Буду признателен за любую помощь.

Исходный файл приложения находится по адресу https://github.com/joatuapp/joatu-v2

edit:

Я выполнил команду

 docker-compose run app ls-la 

и показало, что папка пуста,Итак, теперь я знаю, что это проблема копирования, но я все еще не знаю, как ее исправить.

1 Ответ

0 голосов
/ 30 августа 2019

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

Измените это на

volumes:
  - $PWD:/joatu

this

volumes:
 - $PWD:/joatu/your-workdir

Следует устранить проблему.

Когда вы определяете том /joatu, вы фактически получаете доступ к пути / внутри контейнера, поэтому докер не может найти гем-файлпотому что он находится в /joatu.Вероятно, это только окно, потому что вся документация, доступная для Docker, рекомендует использовать тот же путь, который указан в вашем Dockerfile.

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