0

I have net core mvc project running in layered architecture. It works fine locally but not with docker

FROM mcr.microsoft.com/dotnet/sdk:5.0 as build
WORKDIR /app
COPY ./MyBlog.Shared/MyBlog.Shared.csproj ./MyBlog.Shared/
COPY ./MyBlog.Data/MyBlog.Data.csproj ./MyBlog.Data/
COPY ./MyBlog.Services/MyBlog.Services.csproj ./MyBlog.Services/
COPY ./MyBlog.Entities/MyBlog.Entities.csproj ./MyBlog.Entities/
COPY ./MyBlog.Mvc/MyBlog.Mvc.csproj ./MyBlog.Mvc/
COPY MyBlog.sln .
RUN dotnet restore
COPY . .
RUN dotnet publish ./MyBlog.Mvc/MyBlog.Mvc.csproj -o /publish/
FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
COPY --from=build /publish .
ENV ASPNETCORE_URLS="http://*:5000"
ENTRYPOINT ["dotnet","MyBlog.Mvc.dll" ]

Layers Image

Dockerfile debug Image

Dockerfile output Image

Error Image

Ramil Aliyev 007
  • 4,437
  • 2
  • 31
  • 47

1 Answers1

0

As you can see, the app listening to localhost only. You need to set an environment variable to tell ASP.NET Core to listen to all interfaces, instead of just localhost which is inaccessible to host.

ASPNETCORE_URLS="https://+;http://+"

You have a ENV ASPNETCORE_URLS="http://*:5000" command, but it doesn't seem to take effect, try specifying it as argument:

docker run 
  --rm -it 
  -p 8000:80 
  -p 8001:443 
  -e ASPNETCORE_URLS="https://+;http://+" 
  -e ASPNETCORE_HTTPS_PORT=8001 
  -e ASPNETCORE_Kestrel__Certificates__Default__Password="password" 
  -e ASPNETCORE_Kestrel__Certificates__Default__Path=\https\aspnetapp.pfx 
  -v %USERPROFILE%\.aspnet\https:C:\https\ 
  mcr.microsoft.com/dotnet/core/samples:aspnetapp

See Microsoft's docs on how to dockerize an ASP.NET Core app.

abdusco
  • 9,700
  • 2
  • 27
  • 44