1

我遇到了一个似乎特定于 Windows 的 Vagrant/Docker-Compose 问题。以下是设置和编排的概述:

  • Vagrant 使用 boot2docker 盒子
  • 在 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在升级容器后运行并且可以验证服务名称是否存在,但无论出于何种原因,该命令仅在 Windows 主机上失败!
  • 脚本失败后,机器仍会启动并且 Docker 容器仍处于活动状态。然后我可以vagrant ssh进入盒子(通过 Windows 主机),并通过服务名称引用容器!

有什么建议么?

4

1 回答 1

1

行尾,行尾,行尾。Windows 存储库正在检查并将 LF 转换为 CRLF,因此服务名称的末尾有那个愚蠢的 CR……为了解决这个问题,我根据这个答案创建了以下脚本:

#!/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
于 2016-05-16T19:34:35.510 回答