asp.net - Docker .net 框架应用程序
问题描述
我正在尝试为遗留的 .net 框架应用程序(.net 框架 4.6)创建一个工作的 docker 映像到目前为止我做了什么:
- 我将 Windows 10 上的 Docker 桌面从 Linux 容器切换到 Windows
- 我通过右键单击“发布”将应用程序部署到目录中
- 创建一个构建并运行它的 docker 文件
我苦苦挣扎的地方是执行应用程序。IIS 无法识别应用程序并引发 500 内部服务器错误。
这是我的码头文件。
FROM mcr.microsoft.com/windows/servercore/iis
RUN powershell -NoProfile -Command Remove-Item -Recurse C:\inetpub\wwwroot\*
WORKDIR /inetpub/wwwroot
COPY . .
我从https://hub.docker.com/_/microsoft-windows-servercore-iis获取了说明。
在浏览器中导航到页面时,运行容器时出现的错误如下。localhost:8000/application/admin
为了修复错误,我尝试了以下方法:
- 尝试使用 .net 框架 4.8 和 4.6.2 的图像
- 改变了
connectionstrings
- 设置
CustomErrors
为Off
- 将文件
wwwroot/inetpub
夹中文件的权限设置为所有人和完全
不幸的是,我得到了相同的结果。它似乎无法识别该应用程序。我什至很难获得第一个登录页面,因为我在偶数日志中看不到任何内容。
我将非常感谢任何帮助。提前致谢!
编辑1:
- 直接从容器调用 Invoke-WebRequest 时出现 Http 错误消息。
- 修复了 .net 框架版本
解决方案
感谢所有的帮助。它为我指明了正确的方向。必须安装 url re-write 和一些 IIS 模块才能使应用程序正常工作。此外,我在 Docker 桌面混合模式下遇到了 SQL Server linux 映像的问题。但是有一个旧版本的适用于 Windows 的 SQL Server 可以正常工作。https://hub.docker.com/r/microsoft/mssql-server-windows-developer
这是我的码头文件,我希望它可以帮助别人
FROM mcr.microsoft.com/windows/servercore/iis
RUN powershell -NoProfile -Command Remove-Item -Recurse C:\inetpub\wwwroot\*
RUN powershell -Command Invoke-WebRequest http://download.microsoft.com/download/D/D/E/DDE57C26-C62C-4C59-A1BB-31D58B36ADA2/rewrite_amd64_en-US.msi -OutFile c:/inetpub/rewrite_amd64_en-US.msi
RUN powershell -Command Start-Process c:/inetpub/rewrite_amd64_en-US.msi -ArgumentList "/qn" -Wait
RUN cmd /c C:\Windows\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/handlers
RUN cmd /c C:\Windows\system32\inetsrv\appcmd.exe set apppool /apppool.name:DefaultAppPool /enable32BitAppOnWin64:true
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServer
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-CommonHttpFeatures
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpErrors
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpRedirect
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-ApplicationDevelopment
RUN powershell -Command Enable-WindowsOptionalFeature -online -FeatureName NetFx4Extended-ASPNET45
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-NetFxExtensibility45
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-HealthAndDiagnostics
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpLogging
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-LoggingLibraries
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-RequestMonitor
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpTracing
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-Security
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-RequestFiltering
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-Performance
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerManagementTools
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-Metabase
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-StaticContent
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-DefaultDocument
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebSockets
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-ApplicationInit
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-ISAPIExtensions
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-ISAPIFilter
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpCompressionStatic
RUN powershell -Command Enable-WindowsOptionalFeature -Online -FeatureName IIS-ASPNET45
WORKDIR /inetpub/wwwroot
COPY . .
RUN cmd /c icacls C:/inetpub/wwwroot /grant:r Everyone:F /t
推荐阅读
- python - 如何在 Python 中按项目对 List 的值进行排序?
- c++ - 在 C++ 中返回一个指针实例变量
- android - 无法在 android 应用中向我的 wordpress 网站发表评论?
- python - 为什么此代码只返回“问候!” 不管输入?
- node.js - 使用博览会反应原生纱线开始不起作用
- android - 将 SimpleCursorAdapter 代码从 Java 转换为 Kotlin
- typescript - 如何在 Typescript 中定义和调用泛型函数参数?
- c++ - 如何使用我从源代码构建的库而没有错误,但不能为我自己的项目编译?
- java - 如何在改造中将用户重定向到他们的活动
- mysql - 将 MySQL 添加到 Windows 终端配置文件