Asp.net 理解VS2017 webform应用程序的docker组合
我正在创建一个Webform应用程序,并尝试将其容器化。 我使用VS2017,创建默认webform应用程序,并添加docker支持 如果我对应用程序进行F5处理,它将正常工作(希望如此) “添加docker支持”添加了许多文件: 1) Dockerfile,带有Asp.net 理解VS2017 webform应用程序的docker组合,asp.net,docker,docker-compose,visual-studio-2017,Asp.net,Docker,Docker Compose,Visual Studio 2017,我正在创建一个Webform应用程序,并尝试将其容器化。 我使用VS2017,创建默认webform应用程序,并添加docker支持 如果我对应用程序进行F5处理,它将正常工作(希望如此) “添加docker支持”添加了许多文件: 1) Dockerfile,带有 FROM microsoft/aspnet:4.6.2 ARG source WORKDIR /inetpub/wwwroot COPY ${source:-obj/Docker/publish} . 我知道它是基于aspnet:4
FROM microsoft/aspnet:4.6.2
ARG source
WORKDIR /inetpub/wwwroot
COPY ${source:-obj/Docker/publish} .
我知道它是基于aspnet:4.6.2图像的,它从obj/docker/publish复制文件以将其放入容器中
我的问题是我没有在此目录上发布任何文件。当然,如果我构建docker,我会有一个错误(在obj/docker/publish中找不到文件)。记住,使用F5时,它正在工作
但还有其他文件
2) Docker-compose.yml:
version: '3'
services:
legacywebapp:
image: legacywebapp
build:
context: .\LegacyWebApp
dockerfile: Dockerfile
如果我理解的很好,它会基于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.
为什么我在VisualStudio中使用F5时它会工作?让我们看看VS的构建输出,我可以看到命令行:
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
我想还有另一个文件要调试:
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/publish。什么是obj/Docker/empty/
如何正确构建图像?例如,如果我想在私有存储库中发布它…在您添加Docker支持后,如果您“F5应用程序”,您看到您的示例Web表单工作了吗?如果是,则表示您的Docker映像正在运行。检查Visual Studio生成输出。如果您试图从VisualStudio外部运行构建命令,它将不起作用,因为“Source”是VisualStudio在构建时传递的环境变量。