antontj
antontj

Reputation: 171

Docker for windows - Internal server error

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?

Upvotes: 7

Views: 6650

Answers (3)

Jared
Jared

Reputation: 1385

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>

Upvotes: 0

antontj
antontj

Reputation: 171

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

Upvotes: 9

Volodymyr D.
Volodymyr D.

Reputation: 124

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");

Upvotes: 2

Related Questions