Ваш Dockerfile
предоставляет порт 80 , но вы не отображаете его в файле docker-compose.yml
.
Попробуйте обновить файл docker-compose-yml
следующим образом:
docker-compose-yml
version: '3.4'
services:
apiserver:
image: ${DOCKER_REGISTRY-}apiserver
build:
context: ./
dockerfile: ./ApiServer/Dockerfile
volumes:
- /var/run/docker.sock:/tmp/docker.sock
ports:
- 8080:80
Ключ портов, отобразит порты с вашего хост-компьютера на контейнер.Упрощенный синтаксис:
ports:
- <hostport>:<containerport>
При запуске контейнера с помощью docker-compose docker создаст новую мостовую сеть для вашего стека приложений.Контейнеры в этой сети недоступны с хоста, и контейнеры внутри сети также не могут обращаться к хосту.Вот почему вам нужно сопоставление портов - оно сопоставит порт 8080
на хост-компьютере с портом 80
контейнера.
Затем вы можете обратиться к открытой службе в контейнере с помощью http://localhost:8080 с хост-машины.
Обновление
Из вашего комментария я понял, что у вас могут быть запущены другие сервисы на хосте, к которому вы хотите иметь возможность подключаться изнутриКонтейнер ApiServer, как база данных.Я полагаю, что есть одно быстрое решение: подключить новый контейнер к сети "host".
Вы можете попробовать обновить файл docker-compose.yml так:
docker-compose-yml
version: '3.4'
services:
apiserver:
image: ${DOCKER_REGISTRY-}apiserver
build:
context: ./
dockerfile: ./ApiServer/Dockerfile
volumes:
- /var/run/docker.sock:/tmp/docker.sock
ports:
- 8080:80
network_mode: "host"
Эффект этого состоит в том, что когда вы решаете localhost
и 127.0.0.1
изнутри вашего контейнера - вы фактически получаете хост-машину.Это не сработает, если вы развернете свой контейнер в рой.