繁体   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