我一直在尝试使此应用程序正常运行。构建它不会给我带来任何错误,并且当我的队友遵循相同的步骤时,它会起作用。 但是,当我运行
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
并显示该文件夹为空。因此,现在我知道这是一个复制问题,但我仍然不知道如何解决。
答案 0 :(得分:0)
我知道这是一个古老的话题,但是如果有人遇到此问题,我发现您需要指定稍微不同的文件夹:
更改为
volumes:
- $PWD:/joatu
这个
volumes:
- $PWD:/joatu/your-workdir
应解决此问题。
定义卷/joatu
时,实际上是在容器内访问路径/
,因此docker无法找到gemfile,因为它位于/joatu
中。这可能仅是Window的事情,因为可用于Docker的所有文档都建议使用Dockerfile中定义的相同路径。