Docker工具箱:由于Host目录没有安装到Home目录,找不到Gemfile

我有我的本地机器上安装Docker工具箱,我试图运行Ruby命令来执行数据库迁移。 我在Docker Toolbox快速入门terminal命令行中使用以下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 

任何帮助将不胜感激!

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

共享文件夹

以上是在我的Mac上。 你可以看到我的/Users被共享为VM里的/Users 。 这意味着当我这样做

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

它将在VM内共享/Users/tarun.lalwani/test以在容器内进行/test 。 现在因为/Users虚拟机内的/Users共享到我的主机,这将完美的工作。 但是,如果我这样做

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

然后,即使我有/test在我的Mac它不会被分享。 因为主机装载path依赖于Docker主机服务器。

所以在你的情况下,你应该检查哪个文件夹是共享的,然后分享到哪个path。 假设C:\/c共享那么你可以使用下面的方式来获取虚拟机内的文件

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