Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 745
antontj Avatar asked Apr 03 '17 11:04

antontj


2 Answers

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
like image 112
antontj Avatar answered Sep 22 '22 03:09

antontj


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");
like image 31
Volodymyr Dyptan Avatar answered Sep 21 '22 03:09

Volodymyr Dyptan