docker-compose - 仅通过Vagrant-Windows shell不提供此类服务

时间:2016-05-16 18:18:58

标签: docker vagrant docker-compose vagrant-windows

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

  • 使用boot2docker框的Vagrant
  • 在boot2docker VM内部运行的几个docker容器
  • 运行多个shell脚本的Vagrantfile
  • 在这些shell脚本中,我运行从boot2docker VM调用它们的子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并且可以验证服务名称是否存在,但无论出于何种原因,该命令仅在Windows主机上失败!
  • 脚本失败后,机器仍然启动并且Docker容器处于活动状态。然后我可以vagrant ssh进入框(通过Windows主机),并按服务名称引用容器!

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

行结尾,行结尾,行结尾。 Windows repos正在检出并将LF转换为CRLF,因此服务名称中有愚蠢的CR位于它们的末尾...为了解决这个问题,我创建了以下脚本based on this answer

#!/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