I want to run my .NET MVC application into a docker image: but I’m unable to test it.
Here is my Dockerfile:
# syntax=docker/dockerfile:1
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env
WORKDIR /DataHandlerService
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /DataHandlerService
COPY --from=build-env /DataHandlerService/out .
ENTRYPOINT ["dotnet", "DataHandlerService.dll"]
the image builds successfully but when I run docker container run datahandler here is what I get:
{"EventId":60,"LogLevel":"Warning","Category":"Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository","Message":"Storing
keys in a directory \u0027/root/.aspnet/DataProtection-Keys\u0027 that
may not be persisted outside of the container. Protected data will be
unavailable when container is destroyed.","State":{"Message":"Storing
keys in a directory \u0027/root/.aspnet/DataProtection-Keys\u0027 that
may not be persisted outside of the container. Protected data will be
unavailable when container is
destroyed.","path":"/root/.aspnet/DataProtection-Keys","{OriginalFormat}":"Storing
keys in a directory \u0027{path}\u0027 that may not be persisted
outside of the container. Protected data will be unavailable when
container is destroyed."}}
{"EventId":35,"LogLevel":"Warning","Category":"Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager","Message":"No
XML encryptor configured. Key {90a759c1-0f7a-417f-90e1-6b46c6f05b6a}
may be persisted to storage in unencrypted
form.","State":{"Message":"No XML encryptor configured. Key
{90a759c1-0f7a-417f-90e1-6b46c6f05b6a} may be persisted to storage in
unencrypted
form.","KeyId":"90a759c1-0f7a-417f-90e1-6b46c6f05b6a","{OriginalFormat}":"No
XML encryptor configured. Key {KeyId:B} may be persisted to storage in
unencrypted form."}}
{"EventId":14,"LogLevel":"Information","Category":"Microsoft.Hosting.Lifetime","Message":"Now
listening on: http://[::]:80","State":{"Message":"Now listening on:
http://[::]:80","address":"http://[::]:80","{OriginalFormat}":"Now
listening on: {address}"}}
{"EventId":0,"LogLevel":"Information","Category":"Microsoft.Hosting.Lifetime","Message":"Application
started. Press Ctrl\u002BC to shut
down.","State":{"Message":"Application started. Press Ctrl\u002BC to
shut down.","{OriginalFormat}":"Application started. Press Ctrl\u002BC
to shut down."}}
{"EventId":0,"LogLevel":"Information","Category":"Microsoft.Hosting.Lifetime","Message":"Hosting
environment: Production","State":{"Message":"Hosting environment:
Production","envName":"Production","{OriginalFormat}":"Hosting
environment: {envName}"}}
{"EventId":0,"LogLevel":"Information","Category":"Microsoft.Hosting.Lifetime","Message":"Content
root path: /DataHandlerService/","State":{"Message":"Content root
path:
/DataHandlerService/","contentRoot":"/DataHandlerService/","{OriginalFormat}":"Content
root path: {contentRoot}"}}
>Solution :
You don’t map any ports when you run it, so you can’t reach the container. Your container seems to run fine aside from that.
Try
docker run -p 7242:80 -d datahandler
Then you should be able to get to the app at http://localhost:7242/