了解VS2017 webform应用程序的docker-compose

我正在创build一个WebForm应用程序,我尝试进行容器化。 我使用VS2017,创build默认的WebForm应用程序,并添加docker支持。

如果我F5的应用程序,它的工作(希望)

“添加docker支持”添加了许多文件:

1)一个Dockerfile,用

FROM microsoft/aspnet:4.6.2 ARG source WORKDIR /inetpub/wwwroot COPY ${source:-obj/Docker/publish} . 

我知道它是基于aspnet:4.6.2的图像,并将它从obj / docker / publish复制到容器中的文件。

我的问题是,我没有发布在这个目录上的文件。 当然,如果我dockerbuild设,我有一个错误(它不能findobj /docker/发布文件)。 请记住,使用F5它正在工作。

但是还有其他的文件。

2)Docker-compose.yml:

 version: '3' services: legacywebapp: image: legacywebapp build: context: .\LegacyWebApp dockerfile: Dockerfile 

如果我理解的很好,它会创build一个基于dockerfile的legacywebapp服务。 那个不工作的,仍然没有“obj / docker / publish”

3)docker-compose.override.yml与:

 version: '3' services: legacywebapp: ports: - "80" networks: default: external: name: nat 

好吧,我认为它公开了端口80(为什么不在第一个文件?但无论如何,对于模块化,我想最好)。

如果我尝试

 docker-compose -f .\docker-compose.yml -f .\docker-compose.override.yml build 

当然我有一个错误:

 Step 4/4 : COPY ${source:-obj/Docker/publish} . ERROR: Service 'legacywebapp' failed to build: COPY failed: GetFileAttributesEx \\?\C:\windows\TEMP\docker-builder798755009\obj\Docker\publish: The system cannot find the file specified. 

为什么当我在F5的视觉工作室工作? 让我们来看看VS的构build输出,我可以看到命令行:

 docker-compose -f "C:\Users\...\docker-compose.yml" -f "C:\Users\...\docker-compose.override.yml" -f "C:\Users\...\obj\Docker\docker-compose.vs.debug.g.yml" -p dockercompose15539612722162891187 up -d --build 

所以,还有另一个文件,我想debugging:

4)docker-compose.vs.debug.g.yml

 version: '3' services: legacywebapp: image: legacywebapp:dev build: args: source: obj/Docker/empty/ volumes: - C:\Users\...\LegacyWebApp:C:\inetpub\wwwroot - C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Remote Debugger:C:\remote_debugger:ro labels: com.microsoft.visualstudio.debuggee.program: "C:\\app\\bin/LegacyWebApp.dll" com.microsoft.visualstudio.debuggee.workingdirectory: "C:\\app" 

再次,没有obj / docker /发布。 什么是obj / Docker / empty /?

我如何正确构build图像? 例如,如果我想发布它在私人存储库…