P.S .: Я 99,99% разработчиков Windows, и мой опыт работы с Linux и Docker с прошлой недели.
Немного д-р, но не хочу ничего упускать.
У меня есть три изображения докера:
- Веб-приложение Angular 6 (отправлено в реестр контейнеров Azure)
- ASP .Net Core Web APi (отправлено в реестр контейнеров Azure)
- MongoDB (последняя версия док-хаба)
Вышеуказанная настройка предназначена для Linux Ubuntu и разработана в среде Windows с докером для установки Linux.
Вот шаги, которым я следовал:
- Создана сеть с
sudo docker network create avt_network
- Затем я добавил сеть к изображению "Angular Web app".
sudo docker run -d --net=avt_network <image_name> --name=angular-app
- Сделал то же самое для образа ядра ASP.Net (
--name=avt-api
) и образа Mongo (--name avt-mongo
). Все они были назначены в avt_network. Я за отдельный IP-адрес для них.
- Затем я запустил
sudo docker container ls
, чтобы убедиться, что все три работают
- Затем сделал
sudo docker network inspect avt_network
, и все три изображения были там с уникальным IP-адресом, назначенным им.
Теперь проблема, с которой я сталкиваюсь
С хост-машины, которая является Linux Ubuntu 18.04, я ввел IP-адрес для angular-app
, который является стандартным 172.18.0.1, и он открыл веб-сайт. Но когда я выполняю вызов API из Angular App, в FireFox он показывает ошибку CORS, а в Google Chrome - ERR_NAME_NOT_RESOLVED. При вызове я использую имя контейнера, а не IP-адрес API, чтобы обеспечить согласованность при перезапуске . P.S .: У меня включен CORS на моем .Net Core API
Если я вызываю API напрямую, он работает и приносит данные из MongoDB. Строка подключения - это имя образа, а не IP-адрес образа MongoDB.
Вещи уже пробовали
- Итак, я решил пропинговать IP-адреса с хост-машины, и все трое ответили положительным результатом.
- Тогда я
sudo docker exec -it <angular_app_id> bash
. Отсюда пинг до API с IP-адресом и именем, и результат был положительным.
- Я также попробовал с чистого листа, с созданием новой виртуальной машины и переустановкой всех необходимых вещей; однако конечный результат такой же.
И я не знаю, где я могу пойти не так?
Сейчас я изучаю файлы для создания. В то же время любая помощь или направление будет отличным.