我在本地计算机上安装了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
非常感谢任何帮助!
答案 0 :(得分:1)
问题是因为您在Windows上运行。您需要Docker机器和主机之间的共享文件夹。
上面是我的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 ..