【问题标题】:Could not locate Gemfile or .bundle/ directory找不到 Gemfile 或 .bundle/ 目录
【发布时间】:2020-04-10 22:24:41
【问题描述】:

我正在尝试将 docker on 与 Rails 应用程序一起使用。此设置适用于其他开发人员机器,但不适用于我的机器。我可以让 mysql “启动”,但不能让 rails 应用程序。我已经用了 2 天了。

我在 Windows 10 家庭版中使用 Docker 快速入门终端。大约一年前,我能够在同一台机器上运行它。

这是我的 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-compose 文件:

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:

要重新开始,我运行以下命令: docker-compose build --no-cache 一切似乎都很好。我可以看到所有 gem 的安装。

一旦它运行,我运行: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

【问题讨论】:

    标签: ruby-on-rails windows docker docker-compose


    【解决方案1】:

    看起来您在docker-compose.yml 中设置了BUNDLE_PATH,但您没有在Dockerfile 中设置它。这意味着您的 gem 将被安装到 /usr/local/bundle,但是当您启动容器时,ruby 会在 /bundle-cache 中查找 gem。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-17
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      • 2015-11-09
      • 1970-01-01
      • 2020-08-25
      • 1970-01-01
      相关资源
      最近更新 更多