使用Docker自定义Visual Studio运行配置

And*_*ers 6 visual-studio docker .net-core docker-compose

我正在使用Visual Studio 2017中的Docker设置.NET Core项目.我创建了项目并将docker-compose添加到解决方案中,一切正常.

但不知何故,除了DebugRelease之外,VS不会使用任何配置构建和运行Docker .

我创建了名为Preproduction的解决方案和项目配置并选择了它,并创建了一个docker-compose.vs.preproduction.yml文件.

但是当我运行预生产配置时,项目就会像选择Release一样运行.Build Output控制台还显示以下内容:

调试

*docker-compose -f "docker-compose.yml" -f "docker-compose.override.yml" -f "docker-compose.vs.debug.yml" -p dockercompose3979710767*
Run Code Online (Sandbox Code Playgroud)

发布

*docker-compose -f "docker-compose.yml" -f "docker-compose.override.yml" -f "docker-compose.vs.release.yml" -p dockercompose3979710767*
Run Code Online (Sandbox Code Playgroud)

试生产

*docker-compose -f "docker-compose.yml" -f "docker-compose.override.yml" -f "docker-compose.vs.release.yml" -p dockercompose3979710767*
Run Code Online (Sandbox Code Playgroud)

注意第二个yml文件.它以某种方式使用了发布文件,而不是我添加的自定义配置文件.

有没有人知道如何解决这个问题,所以docker将使用我的自定义配置?

小智 1

不幸的是这是不可能的。花了很多时间搞清楚后,发现这两个文件名被硬编码到了一个DLL中。所有非“DEBUG”的内容都将使用“RELEASE”文件。

通过从不同的文件夹引用不同的 docker-compose.yml 文件来使用它们可能是一种解决方案,但由于它不是标准项目而是 Docker 项目,因此您无权访问构建后事件来复制所需的文件。此外,你不能有多个 Dockerfile,因为它也是基于名称约定的。

您可以使用一个版本来开发和测试,在包含的文件中定义并创建一个脚本,该脚本根据您现有的撰写文件和额外文件手动构建所有内容。