环境 Windows
docker-compose 相关主要文件:
docker-compose.yml
version: '3.4'
services:
daprfrontend:
image: ${DOCKER_REGISTRY-}daprfrontend
build:
context: .
dockerfile: DaprFrontEnd/Dockerfile
ports:
- "51000:50001"
daprfrontend-dapr:
image: "daprio/daprd:latest"
command: [ "./daprd", "-app-id", "daprfrontend", "-app-port", "80" ]
depends_on:
- daprfrontend
network_mode: "service:daprfrontend"
daprbackend:
image: ${DOCKER_REGISTRY-}daprbackend
build:
context: .
dockerfile: DaprBackEnd/Dockerfile
ports:
- "52000:50001"
daprbackend-dapr:
image: "daprio/daprd:latest"
command: [ "./daprd", "-app-id", "daprbackend", "-app-port", "80" ]
depends_on:
- daprbackend
network_mode: "service:daprbackend"
docker-compose.override.yml
version: '3.4'
services:
daprfrontend:
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
ports:
- "80"
- "443"
volumes:
- ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
- ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
daprbackend:
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
ports:
- "80"
- "443"
volumes:
- ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
编译后,提示如下错误
ERROR: for DaprBackEnd Cannot create container for service daprbackend: status code not OK but 500: WatsonBuckets--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Docker.ApiServices.Mounting.FileSharing.<ShareAsync>d__5.MoveNext() in C:\workspaces\PR-16360\src\github.com\docker\pinata\win\src\Docker.ApiServices\Mounting\FileSharing.cs:line 53
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Docker.HttpApi.Controllers.FilesharingController.<ShareDirectory>d__2.MoveNext() in C:\workspaces\PR-16360\src\github.com\docker\pinata\win\src\Docker.HttpApi\Controllers\FilesharingController.cs:line 21
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Threading.Tasks.TaskHelpersExtensions.<CastToObject>d__1`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()
网上搜索的结果,基本上都提到设置共享资源,如下所示
结合我的配置,在docker-compose.override.yml中发现volumns中的设置没有包含在docker中,
然并卵,改了docker-compose.override.yml的volumns的路径,没有效果
随后,在输出中看到如下命令
docker-compose -f "F:\Xiang\Code\UnitTest\docker-compose.yml"
-f "F:\Xiang\Code\UnitTest\docker-compose.override.yml"
-f "F:\Xiang\Code\UnitTest\obj\Docker\docker-compose.vs.debug.g.yml"
-p dockercompose7360960255224803855
--no-ansi up -d --no-build --force-recreate --remove-orphans
命令中,有一个特殊的配置:docker-compose.vs.debug.g.yml
打开后,发现还有其他volumns,如下所示
version: '3.4'
services:
daprbackend:
image: daprbackend:dev
container_name: DaprBackEnd
build:
target: base
labels:
com.microsoft.created-by: "visual-studio"
com.microsoft.visual-studio.project-name: "DaprBackEnd"
environment:
- DOTNET_USE_POLLING_FILE_WATCHER=1
- ASPNETCORE_LOGGING__CONSOLE__DISABLECOLORS=true
- NUGET_FALLBACK_PACKAGES=
volumes:
- F:\Xiang\Code\UnitTest\DaprBackEnd:/app
- F:\Xiang\Code\UnitTest:/src
- C:\Users\Administrator\vsdbg\vs2017u5:/remote_debugger:rw
- C:\Users\Administrator\.nuget\packages\:/root/.nuget/packages:ro
- ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
- ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
entrypoint: tail -f /dev/null
labels:
com.microsoft.visualstudio.debuggee.program: "dotnet"
com.microsoft.visualstudio.debuggee.arguments: " --additionalProbingPath /root/.nuget/packages \"/app/bin/Debug/net5.0/DaprBackEnd.dll\""
com.microsoft.visualstudio.debuggee.workingdirectory: "/app"
com.microsoft.visualstudio.debuggee.killprogram: "/bin/sh -c \"if PID=$$(pidof dotnet); then kill $$PID; fi\""
tty: true
daprfrontend:
image: daprfrontend:dev
container_name: DaprFrontEnd
build:
target: base
labels:
com.microsoft.created-by: "visual-studio"
com.microsoft.visual-studio.project-name: "DaprFrontEnd"
environment:
- DOTNET_USE_POLLING_FILE_WATCHER=1
- ASPNETCORE_LOGGING__CONSOLE__DISABLECOLORS=true
- NUGET_FALLBACK_PACKAGES=
volumes:
- F:\Xiang\Code\UnitTest\DaprFrontEnd:/app
- F:\Xiang\Code\UnitTest:/src
- C:\Users\Administrator\vsdbg\vs2017u5:/remote_debugger:rw
- C:\Users\Administrator\.nuget\packages\:/root/.nuget/packages:ro
- ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
- ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
entrypoint: tail -f /dev/null
labels:
com.microsoft.visualstudio.debuggee.program: "dotnet"
com.microsoft.visualstudio.debuggee.arguments: " --additionalProbingPath /root/.nuget/packages \"/app/bin/Debug/net5.0/DaprFrontEnd.dll\""
com.microsoft.visualstudio.debuggee.workingdirectory: "/app"
com.microsoft.visualstudio.debuggee.killprogram: "/bin/sh -c \"if PID=$$(pidof dotnet); then kill $$PID; fi\""
tty: true
尝试将C:\Users\Administrator也加入到docker中,如下所示
重启后,再尝试编译,顺利通过
Creating DaprFrontEnd ...
Creating DaprBackEnd ...
Creating DaprBackEnd ... done
Creating dockercompose7360960255224803855_daprbackend-dapr_1 ...
Creating DaprFrontEnd ... done
Creating dockercompose7360960255224803855_daprfrontend-dapr_1 ...
Creating dockercompose7360960255224803855_daprbackend-dapr_1 ... done
Creating dockercompose7360960255224803855_daprfrontend-dapr_1 ... done
完成! Docker 容器已准备就绪。