簡體   English   中英

將ASP.Net應用程序部署到Window Server Core容器

[英]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都很棒。

${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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM