Docker Toolbox:无法找到Gemfile,因为主机目录未挂载到主目录

时间:2017-09-15 13:48:24

标签: ruby docker

我在本地计算机上安装了Docker Toolbox,并且我正在尝试运行Ruby命令来执行数据库迁移。我在 Docker工具箱快速入门终端命令行中使用以下docker命令:

docker-compose run app /usr/local/bin/bundle exec rake db:migrate
docker-compose run app bundle exec rake db:create RAILS_ENV=production
docker-compose run app /usr/local/bin/bundle exec rake db:seed

然而,在调用这些命令后,我收到以下错误:

Could not locate Gemfile or .bundle/ directory

在Docker Toolbox中,当我运行这些命令(C:\ project)时,我在我项目的目录中。

在做了一些研究之后,似乎我需要将主机目录安装在主页目录中的某个位置。

所以我尝试使用以下Docker Mount命令:

docker run --mount /var/www/docker_example/config/containers/app.sh:/usr/local/bin

docker run --mount /var/www/docker_example/config/containers/app.sh:/c/project

这两个命令都给我以下错误:

invalid argument "/var/www/docker_example/config/containers/app.sh:/usr/local/bin" for --mount: invalid field '/var/www/docker_example/config/containers/app.sh:/usr/local/bin' must be a key=value pair 
See 'docker run --help'

以下是我在docker-compose.yml文件中的内容:

搬运工-compose.yml:

app:
    build: .
    command: /var/www/docker_example/config/containers/app.sh
    volumes:
      - C:\project:/var/www/docker_example
    expose:
      - "3000"
      - "9312"
    links:
     - db
    tty: true

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

问题是因为您在Windows上运行。您需要Docker机器和主机之间的共享文件夹。

Shared folder

上面是我的Mac。您可以在VM中看到我的/Users被共享为/Users。这意味着我什么时候

docker run -v ~/test:/test ...

它将在VM内共享/Users/tarun.lalwani/test到容器内的/test。现在,由于VM中的/Users被共享到我的主机,这将完美地工作。但是如果我做的话

docker run -v /test:/test ...

然后,即使我的Mac上有/test,也不会共享。因为主机挂载路径依赖于Docker主机服务器。

因此,在您的情况下,您应该检查共享哪个文件夹,然后检查它共享的路径。假设C:\共享/c然后您将使用下面的文件来获取您的文件

docker run -v /c/Project:/var/www/html ..