Docker Невозможно разрешить имя хоста - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь связать мой контейнерный VueJS интерфейс с моим контейнерным бэкэндом Spring Boot API, с большим трудом.

Всякий раз, когда я пытаюсь сделать HTTP-запрос к моему API, используя имя контейнера, я получаю последующий.

ОПЦИИ http://api: 4505 / пользователь / вход net :: ERR_NAME_NOT_RESOLVED

Вот мой docker-compose файл:

version: "3"

services:
  mongodb:
    image: mongo
    container_name: mongo
    ports:
      - "27017:27017"
  api:
    image: registry.gitlab.com/darragh.oflah/api:latest
    container_name: api
    ports:
      - "4505:4505"
    links:
      - mongodb
  web:
    image: registry.gitlab.com/darragh.oflah/web:latest
    container_name: web
    ports:
      - "80:8080"
    links:
      - api

Вот что я получаю при запуске sudo docker network inspect tmp_default

Так что может показаться, что сеть настроена правильно

[
    {
        "Name": "tmp_default",
        "Id": "75ab7c89cb5a80aa7eddd7c5a3f7f4aafb911cfe96a923ad3db2219552366fd7",
        "Created": "2020-02-04T16:55:49.131485109Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "6ae3db08be2ed22245a173a677ae1b0f28eca878aa84e43744a320589cbda5af": {
                "Name": "mongo",
                "EndpointID": "b399bb72f28b6d47a93927712a665dcc725d27a6ba2ee432e715db00c9cbc835",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            },
            "fa7e4066e436181ce2991e048790f8de518af31fb97cf9351316ff8f41824449": {
                "Name": "api",
                "EndpointID": "bf8d071683bfa4ecbd215f3dd534d0e278702ed4377552ef242e5c65b01c3fa1",
                "MacAddress": "02:42:ac:12:00:03",
                "IPv4Address": "172.18.0.3/16",
                "IPv6Address": ""
            },
            "fb544ef5389afd74d53f45d6de968008632b65340f161527a9c7aa4214aa7674": {
                "Name": "web",
                "EndpointID": "2dc3e8a452c241916a2e9f7e25b33ee7997fe2d25ec3543e5d34e888e50d905c",
                "MacAddress": "02:42:ac:12:00:04",
                "IPv4Address": "172.18.0.4/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {
            "com.docker.compose.network": "default",
            "com.docker.compose.project": "tmp",
            "com.docker.compose.version": "1.21.2"
        }
    }
]

В net на рабочей вкладке запрос говорит «сбой», что указывает на то, что запрос вообще не может покинуть контейнер.

enter image description here

1 Ответ

1 голос
/ 04 февраля 2020

Ваш файл создания создает docker сеть. Вы запускаете "сеть" в контейнере в этой сети. Все контейнеры в сети docker могут обращаться к другим контейнерам через имя хоста. Тем не менее, браузер работает на вашем хост-компьютере. Ваш хост-компьютер не находится в сети docker. Поэтому ваш браузер не сможет получить доступ к контейнеру API через имя хоста. Если вы введете http://api:4505/user/sign-in в адресную строку браузера, это сделает то же самое, и вы также получите ошибку.

...