无法在 Visual Studio 2019 中使用 Azure Function 项目构建 docker compose

我正在尝试将 Azure Function 项目添加到在 Visual Studio 2019 (16.7.6) 中创建的 docker-compose 文件中,但这会导致解决方案无法构建。

(Docker for Windows 2.4.0.0 (48506),启用了 WSL2 支持,在 Windows 10 Pro 2004 上以 Linux 容器模式运行)

重现步骤:

  1. 使用包含 docker 支持的 Web Api 项目“Web”创建新解决方案。
  2. 添加一个带有 Http 触发功能的新 Azure Function 项目“Func”,然后通过 Visual Studio Add > Docker Support 选项添加 docker 支持。
  3. 将“Container Orchestration Support”添加到 Web 项目以生成包含 Web 应用程序的 docker-compose.yml 文件

在这一点上,该解决方案在 docker 或 docker-compose 中为 web 或 func 应用程序构建了调试工作——一切都很好。

当手动将“Func”项目添加到 docker-compose.yml 时,解决方案不再构建:

CTC1031 Linux containers are not supported for Func project
Project: docker-compose
File: Microsoft.VisualStudio.Docker.Compose.targets
Line 303

但是,我可以从命令行很好地运行 docker-compose:

docker-compose -f docker-compose.yml up

并且 Web 和 Func 应用程序都可以正常启动。

我的 docker-compose.yml 文件是

version: '3.4'

services:
  web:
    image: ${DOCKER_REGISTRY-}web
    build:
      context: .
      dockerfile: Web/Dockerfile

  func:
    image: ${DOCKER_REGISTRY-}func
    build:
      context: .
      dockerfile: Func/Dockerfile

在 Visual Studio 中构建解决方案时为什么会出现上述错误的任何想法?

stack overflow Unable to build docker compose with Azure Function project in Visual Studio 2019
原文答案

答案:

作者头像

有同样的问题。似乎 docker-compose 项目类型只允许对特定类型的项目设置依赖项,如 Sdk="Microsoft.NET.Sdk.Web",而不允许库项目如 Sdk="Microsoft.NET.Sdk" .从 docker-compose.yml 引用 Dockerfile 会自动设置引用。

如果项目类型错误,compose 可以工作,但 docker-compose 项目的编译失败。

作者头像

我也收到了错误:

CTC1031 Linux 容器不支持

这可能意味着您的项目 Output type 设置为 Class Library 而不是 Console Application

enter image description here

相关问题