首先,我使用的是.NET 4.6.1.使用VS 2017的Docker是否不适用于除.NET Core之外的任何东西?
我使用了新功能Add> Docker支持从上下文菜单中创建了一堆文件.这是我的Dockerfile(因为它是自动创建的,所以没有触及它):
FROM microsoft/windowsservercore
ARG source
WORKDIR /app
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["C:\app\nameofmyapp.exe"]
当我构建时,我收到以下错误:
The “CleanWorkspace” task failed unexpectedly.
Microsoft.DotNet.Docker.CommandLineClientException: The Compose file
‘…\docker-compose.yml’
is invalid because: services.pas.parsemicroservice.build.context
contains null, which is an invalid type, it should be a string.
这是我的docker-compose.yml文件:
version: '2.1'
services:
pas.parsemicroservice:
image: pas.parsemicroservice
build:
context:
dockerfile: Dockerfile
如果我添加一个.上下文(因为错误暗示null存在问题),我得到一个不同的错误:
There is a circular dependency in the target dependency graph
involving target “DockerCleanServiceReferences”.
这都是使用错误的.NET框架的结果,还是我的文件设置错误? (我肯定是Docker n00b.)
解决方法:
更新:关于循环依赖项问题,请确保您的SLN和CSPROJ文件不在同一文件夹中.这意味着当您第一次创建解决方案时,请务必选中“创建解决方案目录”框.
对于非.Net Core应用程序的Docker支持在VS 2017中肯定受支持,如此视频https://channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2017-Launch/T111的9:15所示
您的上下文应指向Dockerfile所在的目录.此路径应该与docker-compose.yml文件所在的位置相关.
撰写文件版本2参考:https://docs.docker.com/compose/compose-file/compose-file-v2/#context