I'm testing out Docker with a basic .NET core project. I Build and image from this docker file:
FROM microsoft/dotnet:latest
COPY . /app
WORKDIR /app/API
RUN ["dotnet", "restore"]
RUN ["dotnet", "build"]
EXPOSE 5000/tcp
CMD ["dotnet", "run", "--server.urls", "http://*:5000"]
I run it and it goes flawlessly. Now the only problem is, on what IP is it running ?
I'm running Docker on Windows!
Regards
I had some issues with running linux containers built for dotnet asp.net core 2 on docker for windows.
The command I was using to run my container was:
I could shell to the container and verify the app was listening and returning results.
However, trying to access the app from my machine on port 3394 wouldn't work for
127.0.0.1
,localhost
, or my machine's NAT ip on the network.However, running this command gives the IP address allocated by the docker host:
In my case the IP was
172.17.0.2
. However, accessing172.17.0.2:3394
still didn't work.The last piece needed was to run the following in an elevated dos prompt:
This added a route so my machine didn't seek the address via my WAN, which was diagnosed via
tracert
.Credit goes to https://github.com/docker/for-win/issues/221
You're already exposing the port internally, so the only other thing I can suggest is to check you are opening the port when launching your image too:
docker run -it -p 5000:5000 <imagename>
This will open port 5000 inside the instance to port 5000 on your local machine, and should then be accessible on
127.0.0.1:5000
orlocalhost:5000
.You should also ensure that you are accepting any host name within
Main()
inProgram.cs
with.UseUrls("http://*:5000/")
on yourWebHostBuilder
.