Docker-Compose构建.NET服务时无法找到.csproj文件求助
问题原因分析
- 构建上下文错误:当前
docker-compose.yml中build.context设为.(即docker-compose目录),而你的.csproj文件在上级目录的contentserviceprj/userserviceprj中,构建时无法访问到这些文件。 - Dockerfile路径错误:docker-compose里指定的
dockerfile路径是contentservice/Dockerfile,但实际目录名是contentserviceprj,路径不匹配。 - 环境变量拼写错误:
contentservice服务中的${DOCKER_REGISTSTRY-}多写了一个s,应为${DOCKER_REGISTRY-}。
解决方案
直接修改docker-compose.yml,将每个服务的构建上下文指向对应服务的目录,同时修正路径和拼写错误:
修改后的docker-compose.yml:
version: '3.4' services: userservice: image: ${DOCKER_REGISTRY-}userservice build: context: ../userserviceprj # 指向userserviceprj目录 dockerfile: Dockerfile ports: - "9000:80" environment: - GOOGLE_APPLICATION_CREDENTIALS=./firebase-config.json contentservice: image: ${DOCKER_REGISTRY-}contentservice # 修正拼写错误 build: context: ../contentserviceprj # 指向contentserviceprj目录 dockerfile: Dockerfile ports: - "9001:80"
验证方法
在docker-compose目录下重新执行命令:
docker-compose -f docker-compose.yml up --build
这样每个服务的构建上下文就和你单独进入服务目录执行docker build时一致,Dockerfile中的COPY *.csproj .就能正确找到项目文件,解决MSB1009错误。
内容的提问来源于stack exchange,提问作者MontyVan
相关产品推荐
相关产品推荐

