Tengo un problema al ejecutar una de mis soluciones en Docker Desktop para Windows . Yo uso el siguiente dockerfile:
# escape=` FROM microsoft/iis SHELL ["powershell", "-command"] # Install ASP.NET RUN Install-WindowsFeature NET-Framework-45-ASPNET; ` Install-WindowsFeature Web-Asp-Net45 # Configure website EXPOSE 8000 RUN Remove-Website -Name 'Default Web Site'; ` md c:\barometer; ` New-Website -Name 'barometer' ` -Port 8000 -PhysicalPath 'c:\barometer' ` -ApplicationPool '.NET v4.5' COPY PublishOutput c:\barometerMis pasos de compilación son los siguientes:
docker build -t mvcbarometer . docker run -d --name barometer mvcbarometer docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" barometerTodo funciona bien, pero recibo el siguiente error cuando visito el sitio: "Hay un problema con el recurso que está buscando y no se puede mostrar".
Por alguna razón, no puedo obtener la clásica página de error amarilla que se muestra al depurar a través de Visual Studio, aunque estoy usando la misma configuración.
No parece que la ventana acoplable registre ningún error en ninguna parte, por lo que estoy un poco atascado en la depuración del problema. Mis otros proyectos (más básicos) funcionan bien con una configuración de compilación de ventana acoplable similar.
Leí en alguna parte que Docker tiene problemas con ciertos elementos web.config, pero no puedo encontrar ninguna documentación real sobre el tema.
¿Alguien podría ayudarme a depurar el problema?
Finalmente encontré el problema. Estaba usando la funcionalidad de reescritura de URL 2.0, pero olvidé instalarla en la imagen de la ventana acoplable.
Agregar lo siguiente a mi archivo docker resolvió el problema:
# Install Url Rewrite ADD https://download.microsoft.com/download/C/9/E/C9E8180D-4E51-40A6-A9BF-776990D8BCA9/rewrite_amd64.msi /install/rewrite_amd64.msi RUN msiexec.exe /ic:\install\rewrite_amd64.msi /passiveParece que iis carece de permisos de acceso al directorio. Intente copiar los permisos del directorio wwwroot y asígnelos al nuevo sitio.
RUN Set-Acl -Path c:\barometer -AclObject (Get-Acl -Path "C:\inetpub\wwwroot");