Не удалось найти каталог Gemfile или .bundle / - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь использовать docker в приложениях rails. Эта настройка работает на машинах других разработчиков, но не на моей. Я могу получить mysql "вверх", но не приложение rails. Я занимаюсь этим уже 2 дня.

Я нахожусь на windows 10 дома, используя терминал быстрого запуска Docker. Я смог запустить это около года go на той же машине.

Вот мой Dockerfile:

FROM ruby:2.5.3

ARG workdir=/bundle-api

RUN apt-get update -qq && apt-get install -y build-essential netcat graphviz
RUN mkdir -p ${workdir}

WORKDIR ${workdir}

ADD Gemfile ${workdir}/Gemfile
ADD Gemfile.lock ${workdir}/Gemfile.lock

RUN bundle install

ADD . ${workdir}

Вот мой docker -компонентный файл:

version: '2'
services:
  db:
    image: mysql:5.7
    container_name: bundle-mysql
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: bundle_api_pwd
      MYSQL_DATABASE: bundle_api_dev
      MYSQL_USER: bundle_api
      MYSQL_PASSWORD: bundle_api_pwd
    ports:
      - "3306:3306"
  web:
    build: .
    container_name: bundle-rails
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/bundle-api:cached
      - bundle_cache:/bundle_cache
    ports:
      - "3100:3000"
    environment:
      DB_HOST: db
      DB_USERNAME: root
      DB_PASSWORD: bundle_api_pwd
      BUNDLE_PATH: /bundle_cache
      GEM_HOME: /bundle_cache
      GEM_PATH: /bundle_cache

    depends_on:
      - db
    stdin_open: true
    tty: true
  bundle_cache:
    image: busybox
    volumes:
      - bundle_cache:/bundle_cache
volumes:
  db_data:
  bundle_cache:

Для запуска fre sh Я запускаю это: docker-compose build --no-cache Кажется, все работает нормально. Я вижу, как все гемы устанавливаются.

После запуска я запускаю: docker-compose up и получаю эту ошибку.

bundle-rails    | Could not locate Gemfile or .bundle/ directory
bundle-rails exited with code 10
            Name                           Command                State                  Ports
------------------------------------------------------------------------------------------------------------
bundle-backend_bundle_cache_1   sh                               Exit 0
bundle-mysql                    docker-entrypoint.sh mysqld      Up        0.0.0.0:3306->3306/tcp, 33060/tcp
bundle-rails                    bundle exec rails s -p 300 ...   Exit 10

1 Ответ

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

Похоже, вы устанавливаете BUNDLE_PATH в docker-compose.yml, но вы не устанавливаете его в Dockerfile. Это означает, что ваши драгоценные камни будут установлены на /usr/local/bundle, но затем при запуске контейнера ruby ищет в /bundle-cache драгоценные камни.

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