VS2017 docker-compose vs docker-compose.override?

时间:2018-06-25 22:03:58

标签: docker visual-studio-2017 docker-compose docker-for-windows

环境:

Windows 10 Enterprise
Visual Studio专业版2017
Docker CE 18.03.1-ce-win65(17513)

当我创建解决方案并添加Docker支持时,VS2017将创建一个docker-compose项目并添加docker-compose.yml和docker-compose.override.yml。这两个文件之间有区别吗?我问的原因是我试图在每个容器的基础上设置环境变量。

如果我在docker-compose中执行此操作。覆盖 .yml文件为:

services:
  webapplication1:
    environment:
      - TEST=HELLO1
    ports:
      - "80"

它可以正常工作。

如果我在docker-compose.yml中这样做:

services:
  webapplication1:
    image: compositeapp
    environment:
      - TEST=HELLO1
    build:
      context: .\WebApplication1
      dockerfile: Dockerfile

现在它不再生成并给我一个错误:

严重性代码描述项目文件行抑制状态 错误(第6行,第Col,7,Idx:73)-(第6行,第Col,7,Idx:73):预期为'MappingStart',得到了'SequenceStart'(第6行,第Col,7,Idx: 73)。 docker-compose C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ Sdks \ Microsoft.Docker.Sdk \ build \ Microsoft.VisualStudio.Docker.Compose.targets 294

为什么有些事情需要放在主文件中,而另一些需要在覆盖文件中?从我所看到的文档中,通常只有主要的compose文件。重写是VS2017特定的东西吗?

1 个答案:

答案 0 :(得分:0)

那是VS中特定Docker工具版本的错误,已在15.8 Preview 3或更高版本中修复。您可以选择升级或使用此处提到的解决方法:https://github.com/Microsoft/DockerTools/issues/98