docker-compose在捆绑中找不到gemfile

时间:2019-02-21 19:19:04

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

我一直在尝试使此应用程序正常运行。构建它不会给我带来任何错误,并且当我的队友遵循相同的步骤时,它会起作用。 但是,当我运行

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版本:docker engine 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,然后再次返回以尝试“取消屏蔽”,但仍然无法正常工作。

我已移至Windows中的其他文件夹,以查看是否为权限问题。仍然没有用。而且,我已删除图像并重新构建它,以确保旧图像不会使更改混乱。

任何帮助将不胜感激。

原始文件应用位于https://github.com/joatuapp/joatu-v2

编辑:

我运行了命令

 docker-compose run app ls-la 

并显示该文件夹为空。因此,现在我知道这是一个复制问题,但我仍然不知道如何解决。

1 个答案:

答案 0 :(得分:0)

我知道这是一个古老的话题,但是如果有人遇到此问题,我发现您需要指定稍微不同的文件夹:

更改为

volumes:
  - $PWD:/joatu

这个

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

应解决此问题。

定义卷/joatu时,实际上是在容器内访问路径/,因此docker无法找到gemfile,因为它位于/joatu中。这可能仅是Window的事情,因为可用于Docker的所有文档都建议使用Dockerfile中定义的相同路径。