![](/img/trans.png)
[英]How to deploy asp.net application to docker container on Linux server?
[英]Deploy ASP.Net Application to Window Server Core Container
我在使用舊版asp.net Web應用程序手動構建和運行Windows Server核心容器時遇到問題。 從Visual Studio中,我可以使用自動生成的dockerfile / yml文件運行容器。
我想使用dockerfile而不是Visual Studio進行docker build和docker run powershell命令。
這是當前的yml文件:
version: '3'
services:
fulldotnetwebapplication:
image: fulldotnetwebapplication
build:
context: .\FullDotNetWebApplication
dockerfile: Dockerfile
這是當前的dockerfile:
FROM microsoft/aspnet:4.7.1-windowsservercore-ltsc2016
ARG source
WORKDIR /inetpub/wwwroot
COPY ${source:-obj/Docker/publish} .
假設我的ASP項目是FullDotNetWebApplication,它包含App_Data,Content,Controllers等文件夾以及Master / ASPX頁面以及web / packages / config。
我為我的Dockerfile嘗試了這個:
FROM microsoft/aspnet:4.7.1-windowsservercore-ltsc2016
WORKDIR /inetpub/wwwroot
COPY . .
COPY ./bin ./bin
並收到此錯誤:
docker : COPY failed: GetFileAttributesEx \\?\C:\Windows\TEMP\docker-builder977521850\bin: The system cannot find the file specified.
At line:1 char:1
+ docker build -t fulldotnetwebapplication .
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (COPY failed: Ge...file specified.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
我的docker文件應如何從Powershell將此應用程序部署到IIS? 我不明白魔術VS在做什么以使它起作用? 它是構建應用程序還是生成某種部署文件? 我可以指出的任何示例或示例Dockerfile都很棒。
這些可能會幫助您指出正確的方向:
https://blog.alexellis.io/run-iis-asp-net-on-windows-10-with-docker/
https://docs.microsoft.com/en-us/virtualization/windowscontainers/quick-start/quick-start-images
https://sarafian.github.io/2017/02/14/docker-windows-full-asp.net-application.html
您需要在Docker文件中包括的第一件事是[SHELL]配置。 還要檢查Docker PowerShell命令
${source:-obj/Docker/publish}
因此,您可以在VS中運行它,但不能從PowerShell / CMD中運行它,VS會注入該路徑的源部分,以將其映射到當前項目的特殊docker publish文件夾。
如果up替換為. .
. .
,這意味着將所有內容以遞歸方式從我當前的執行目錄(如果未手動指定文件,通常與dockerfile位置相同)復制到容器中的工作目錄。 這樣,您就不必進行COPY ./bin ./bin
,因為進行COPY . .
COPY . .
將已經復制了該目錄(假設它確實存在)
它是構建應用程序還是生成某種部署文件?
容器是部署的單元,您不能將容器部署到IIS,它必須在容器主機上運行。 Docker也不會構建您的解決方案,在構建容器之前,您應該構建您的解決方案,然后僅復制所需的輸出(這是VS源路徑正在嘗試執行的操作)。
可以使容器工作流也使用多階段容器來構建解決方案,在這種情況下,您可以使用安裝了VS的容器來構建項目,然后將輸出復制到另一個容器中以運行它,但這是相當合理的。如果您甚至無法正常進行構建復制,我將不建議您使用高級設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.