Docker for windows - Internal server error
Asked Answered
M

3

7

I am having a problem when running one of my solutions in Docker Desktop for Windows. I use the following 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:\barometer

My build steps are as follows:

docker build -t mvcbarometer .
docker run -d --name barometer mvcbarometer
docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" barometer

Everything builds fine, but i get the following error when visiting the site: "There is a problem with the resource you are looking for, and it cannot be displayed."

- http://imgur.com/a/areF8

For some reason i cannot get the classic yellow error page that is shown when debugging through visual studio, even though i am using the same configuration.

It does not seem like docker logs any errors anywhere, so i am kinda stuck at debugging the problem. My other (more basic) projects works fine with a similar docker build setup.

I read somewhere that docker has problems with certain web.config elements, but i cannot find any real documentation on the subject.

Could anyone help me with debugging the problem?

Marinate answered 3/4, 2017 at 11:53 Comment(0)
M
9

I finally found the problem. I was using url rewrite 2.0 functionality, but forgot to install it in the docker image.

Adding the following to my docker file solved the problem:

# 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 /i c:\install\rewrite_amd64.msi /passive
Marinate answered 24/5, 2017 at 13:12 Comment(2)
How did you debug the issue? Did you find logs somewhere?Nastassia
ADD download.microsoft.com/download/1/2/8/… /install/rewrite_amd64.msi RUN msiexec.exe /i c:\install\rewrite_amd64.msi /passive => 2020/09Babu
K
2

It seems iis lacks access permissions to the directory. Try to copy wwwroot directory permissions and assign it to the new site.

RUN Set-Acl -Path c:\barometer -AclObject (Get-Acl -Path "C:\inetpub\wwwroot");
Kerriekerrigan answered 19/4, 2017 at 11:21 Comment(1)
The addition of "RUN Set-Acl -Path c:\barometer -AclObject (Get-Acl -Path "C:\inetpub\wwwroot");" to the docker file changed nothing. As stated in the original post: "My other (more basic) projects works fine with a similar docker build setup.", why i assume that all permissions to the folder must be correct.Marinate
S
0

Could anyone help me with debugging the problem?

I had the same trouble debugging an ASP.NET app in Docker. I found the answer here.

<configuration>
  <system.webServer>
    <httpErrors errorMode="Detailed" />
  </system.webServer>
</configuration>
Septicemia answered 17/5, 2019 at 5:36 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.