我尝试将 Azure Function 项目添加到在 Visual Studio 2019 (16.7.6) 中创建的 docker-compose 文件中,但这会导致解决方案无法构建。
(Docker for Windows 2.4.0.0 (48506),启用了 WSL2 支持,在 Windows 10 Pro 2004 上以 Linux 容器模式运行)
重现步骤:
- 使用包含 docker 的 Web Api 项目“Web”创建新解决方案 支持。
- 使用 Http 触发器添加新的 Azure Function 项目“Func” 功能,然后通过 Visual Studio 添加 docker 支持 > Docker 支持选项。
- 向 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/