【问题标题】:getting bundler load error frequently and no such file Gemfile error经常收到捆绑程序加载错误并且没有此类文件 Gemfile 错误
【发布时间】:2016-10-31 22:47:13
【问题描述】:

下面是项目根目录下的docker文件:-

FROM ruby:2.2
MAINTAINER technologies.com

RUN apt-get update -qq && apt-get install -y build-essential

RUN apt-get install -y libxml2-dev libxslt1-dev

RUN apt-get install -y libqt4-webkit libqt4-dev xvfb

RUN apt-get install -y nodejs

ENV INSTALL_PATH /as_app

RUN mkdir -p $INSTALL_PATH

WORKDIR $INSTALL_PATH

COPY Gemfile Gemfile

RUN bundle install

COPY . .

EXPOSE 3000

CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0"]

以下是项目根目录下 docker-compose.yml 文件中的内容:-

as_web:
  build: .
  environment:
    - RAILS_ENV=development
    - QUEUE=*
    - REDIS_URL=redis://redis:6379
  volumes:
    - .:/as_app
  ports:
    - 3000:3000
  links:
    - as_mongo
    - as_redis
  command: rails server -b 0.0.0.0
as_mongo:
  image: mongo:latest
  ports:
    - "27017:27017"
as_redis:
  image: redis
  ports:
    - "6379:6379"
as_worker:
  build: .
  environment:
    - QUEUE=*
    - RAILS_ENV=development
    - REDIS_URL=redis://redis:6379
  volumes:
    - .:/as_app
  links:
    - as_mongo
    - as_redis
  command: bundle exec rake environment resque:work  

docker 版本 1.11.2、docker-machine 版本 0.8.0-rc1、docker-compose 版本 1.8.0-rc1、ruby 2.2.5、rails 4.2.4。

我的问题是:-

1) 当我从项目根目录使用“docker-compose build”构建映像时,该映像在安装了 gem 的情况下成功构建。
2)但是当我执行“docker-compose up”时,as_web 和 as_worker 服务分别以代码 1 和 10 退出。由于没有找到 gemfile 或 .bundler 而给出错误。当我通过 bash 登录图像并查看工作目录时,看不到任何项目文件。

3) 我想知道的知识是:-

i) 当我启动终端时,我像“docker-machine start default”一样手动启动 VirtualBox 实例
ii)然后我执行命令“eval $(docker-machine env dev)”将当前shell指向virtualbox docker-daemon,所以之后我执行“docker build -t as_web”。终端给出类似“将当前构建上下文发送到 docker daemon”的消息,

a) 这条消息是说在 VirtualBox 中进行构建吗?

如果我执行“docker-compose build”,则不会出现“正在发送....”这样的消息,

B) docker-compose 是否也指向虚拟框中的 docker 守护进程,或者它正在 localhost(myubuntuOS) 中构建,我有点困惑?

如果您需要任何额外的信息,希望你们了解详细信息。然后告诉我,谢谢大家。快乐编码。

【问题讨论】:

    标签: docker docker-compose dockerfile ruby-on-rails-4.2 docker-machine


    【解决方案1】:

    docker-compose builddocker build 都做同样的事情。他们都使用 docker 引擎 API 在 vi​​rtualbox 中构建图像。输出消息只是略有不同。

    你的问题是因为这个:

     volumes:
    - .:/as_app
    

    您正在使用主机中的项目目录覆盖应用程序目录。如果您没有在主机上运行 bundle install,则文件在启动时不会在容器中。

    您可以通过运行 docker-compose run as_app bundle install 来解决此问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-09
      • 2016-01-10
      相关资源
      最近更新 更多