Невозможно получить доступ к URL-адресу .net core api после размещения в докере - PullRequest
0 голосов
/ 12 января 2019

VS VS 2017. Dotnet core 2.1 Мой Windows 10 и Docker для Windows установлены. Версия для Windows 10.0.16299.904 Версия Docker - сообщество 18.09.0 как для клиента, так и для сервера

Я просто создал новый Файл-> Создать-> Проект -> .Net Core -> Базовое веб-приложение Asp.net -> Api с включенным Docker.

Не внося никаких изменений, я собрал его, попробовал запустить его в IIS Express и Docker, и он работал, показывая ответ контроллера / api / values ​​по умолчанию в качестве значений.

Теперь в приглашении ps я могу увидеть изображение и поэтому создал соответствующий контейнер.

В команде docker ps -a выводит список запущенных контейнеров с портом 1598-> 80 / tcp

Я использовал docker inspect для вывода списка json, а показанный ip - 172.22.74.213.

Я использовал http://172.22.74.213:1598/api/values для доступа к моему API, но получаю ошибку ниже:

enter image description here

Использование Docker Inspect говорит, что контейнер работает. Я использую неправильный URL для доступа к моему API?

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Это связано с изображением, созданным VS 2017.

Попробуйте создать свой собственный образ по

D:\xx\TestPro>docker build -f DockerTestPro/dockerfile -t docker0115 .

А затем запустить контейнер по

docker run -it -p 8066:80 docker0115

Затем доступ по http://localhost:8066/

0 голосов
/ 12 января 2019

Да, вы используете неправильный IP. Просто нажмите http://localhost:1598/api/values, поскольку Docker для Windows (по умолчанию) не привязывается к другому IP-адресу для открытых портов.

Редактировать

Кроме того, убедитесь, что вы действительно открываете порт при запуске контейнера. Также ознакомьтесь с подробностями об API-интерфейсе dotnet, позволяющем подключаться к любому имени хоста: этот ответ на аналогичный вопрос :

проверьте, открываете ли вы порт и при запуске образа:

docker run -it -p 5000:5000 <imagename>

Это откроет порт 5000 внутри экземпляра для порта 5000 на вашем локальный компьютер и должен быть доступен на 127.0.0.1:5000 или localhost:5000.

Вы также должны убедиться, что вы принимаете любое имя хоста в пределах Main() в Program.cs с .UseUrls("http://*:5000/") на вашем WebHostBuilder.

В вашем случае вам понадобится привязка порта: 1598:80.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...