![](/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.