docker-compose – 只有Vagrant-Windows shell没有这样的服务

我遇到了一个与Vagrant / Docker-Compose相关的问题,这个问题似乎是针对Windows的。 以下是设置和编排的概述:

  • 使用boot2docker框的stream浪汉
  • 在boot2docker虚拟机内运行的几个docker容器
  • 运行几个shell脚本的Vagrantfile
  • 在这些shell脚本的内部,我运行从boot2docker虚拟机调用到它的子Docker容器的命令。 这些命令的例子如下所示: docker exec -i $(docker-compose ps -q $DOCKER_DBSVC) /bin/bash /db/dockersetup/restoreMyDB.sh
  • 在我的Linux Mint盒子(和一个Ubuntu盒子)上运行vagrant up产生正常执行所有命令的工作机器
  • 在Windows上运行vagrant up失败上述命令(和类似的命令) No such service: my-db-service
  • 我在运行docker-compose config --services之后运行了这个容器,可以validation这个服务名是否存在,但是无论什么原因,这个命令在Windows主机上只会失败!
  • 脚本失败后,机器仍然启动,Docker容器还活着。 然后,我可以通过Windows主机将vagrant ssh转移到盒子中,并通过服务名称引用容器!

有什么build议么?

行尾,行尾,行尾。 Windows回购是检查出来,并将LF转换为CRLF,所以服务名称有愚蠢的CR坐在他们的最后…为了解决这个问题,我创build了以下脚本基于这个答案 :

 #!/bin/bash git config --global core.autocrlf false git config --global core.eol lf git rm --cached -rf . git diff --cached --name-only -z | xargs -n 50 -0 git add -f