gpt4 book ai didi

ruby-on-rails - docker-compose 在 bundle 中找不到 gemfile

转载 作者:行者123 更新时间:2023-12-02 11:02:38 24 4
gpt4 key购买 nike

我一直在尝试让这个应用程序运行一段时间。它不会给我带来任何错误来构建它,并且当我的队友遵循相同的步骤时它就可以工作。但是,当我运行时

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引擎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 

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

最佳答案

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

将其更改为

volumes:
- $PWD:/joatu

这个

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

应该解决这个问题。

当你定义卷/joatu时,你实际上是在访问容器内的路径/,所以docker无法找到gemfile,因为它位于 >/joatu。这可能只是一个 Window 问题,因为所有适用于 docker 的文档都建议使用 Dockerfile 中定义的相同路径。

关于ruby-on-rails - docker-compose 在 bundle 中找不到 gemfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54814608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com