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

标签 docker-compose visual-studio-2019 azure-function-app

我尝试将 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 添加 docker 支持 > Docker 支持选项。
  3. 向 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 中构建解决方案时出现上述错误吗?

最佳答案

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

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

关于docker-compose - 无法在 Visual Studio 2019 中使用 Azure Function 项目构建 docker compose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64608718/

相关文章:

Azure 函数调用类库中的方法?

docker - docker run hello-world中的错误(守护程序的错误响应:OCI运行时创建失败:)

powershell - 请提供凭据错误推送到 Azure DevOps

docker - 运行命令 "docker-compose run web ..."在 Kitematic 容器列表中创建一个新容器

c# - 使用 visual studio 和 entity framework core 5.0.2 连接到 MSSQL Server developer edition

c++ - Visual Studio "The debug worker process exited unexpectedly"每次运行都在同一个断点上

node.js - Express JS 到 Azure 函数 API 迁移

python - 为什么我的 python 定时器触发函数没有在正确的时间运行?

docker - 在 docker :dind 中运行 docker-compose

macos - docker-machine-连接被拒绝错误