VS 2017添加Docker支持后导致构建失败 - "CleanWorkspace"任务意外失败(控制台应用程序)

4

首先,我正在使用.NET 4.6.1。Docker与VS 2017只能与.NET Core一起使用吗?

我使用了上下文菜单中的新功能添加>Docker支持,它创建了一堆文件。这是我的Dockerfile(自动创建后没有更改):

FROM microsoft/windowsservercore
ARG source
WORKDIR /app
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["C:\app\nameofmyapp.exe"]

当我构建时,出现以下错误:
“CleanWorkspace”任务意外失败。 Microsoft.DotNet.Docker.CommandLineClientException:Compose文件 '...\docker-compose.yml' 无效,因为:services.pas.parsemicroservice.build.context 包含 null,这是一种无效类型,应该是字符串。
这是我的 docker-compose.yml 文件:
version: '2.1'

services:
  pas.parsemicroservice:
    image: pas.parsemicroservice
    build:
      context: 
      dockerfile: Dockerfile

如果我在上下文中添加一个点(因为错误暗示“null”是问题所在),我会得到不同的错误:
引用块:
目标依赖图中存在涉及目标“DockerCleanServiceReferences”的循环依赖关系。
这一切是否都是使用错误的.NET框架的结果,还是我的文件设置有问题?(我肯定是个Docker n00b。)
1个回答

4
更新: 关于您的循环依赖问题,请确保您的SLN和CSPROJ文件不在同一个文件夹中。这意味着当您首次创建解决方案时,请务必勾选“为解决方案创建目录”的框。

对于非 .Net Core 应用程序,Docker 在 VS 2017 中的支持是绝对可以的,如此视频的9:15处所示:https://channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2017-Launch/T111

您的 context 应该指向您的 Dockerfile 存在的目录。这个路径应该相对于您的docker-compose.yml文件所在的位置。

Compose文件版本2参考:https://docs.docker.com/compose/compose-file/compose-file-v2/#context


它们都在同一个文件夹中,所以正确的条目应该是“.”,对吗?当我在上下文中使用它时,我会收到关于“目标依赖图中涉及目标“DockerCleanServiceReferences”的循环依赖关系”的错误。听到非 Core 应用程序得到支持的好消息真是太棒了! - codeMonkey
确认了 - 如果SLN和CSPROJ文件在不同的文件夹中,错误就会消失。谢谢! - codeMonkey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接