Docker: не удается перенаправить порт контейнера docker на хост

#docker #docker-compose

#docker #docker-compose

Вопрос:

Итак, у меня запущен контейнер docker, я попытался перенаправить его сервисный порт на хост:

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

 version: '3'
services:
  ai-recommender-server:
    build: .
    ports:
      - "3518:3518"
  

Когда контейнер запущен, я могу проверить его через «docker ps -a»

 CONTAINER ID        IMAGE                                                  COMMAND                  CREATED                  STATUS              PORTS                    NAMES
ff940601a02f        recommender_ai-recommender-server                      "python server.py"       About an hour ago        Up About an hour    0.0.0.0:3518->3518/tcp   recommender_ai-recommender-server_1
  

Когда я попытался получить доступ изнутри контейнера:

 $ docker exec -it ff94 sh
/service # curl http://localhost:3518
{
  "message": "AI recommendation system"
}
  

Но когда я попытался сделать это на хосте, я получил сообщение об ошибке «curl: (56) Сбой Recv: сброс соединения одноранговым узлом»

 $ curl http://localhost:3518
curl: (56) Recv failure: Connection reset by peer
  

Кто-нибудь может узнать, в чем моя проблема?

Ответ №1:

Поскольку это python, я думаю, что привязка к 0.0.0.0 может отсутствовать в вашем коде python

Что-то вроде этого внутри вашего python server.py

app.run(debug='False',host='0.0.0.0',port=3518)

Комментарии:

1. итак, у меня есть это в моем коде python: app.run (host = ‘localhost’, port = 3518, debug = True), есть ли какие-либо проблемы?

2. ДА. Это не будет работать внутри контейнера docker при использовании localhost . Проверьте эту ссылку

3. Спасибо @Wander3r, это работает! ваша ссылка очень информативна

4. @KenTsoi, пожалуйста, отметьте этот ответ как решение вашей проблемы

5. Извините, забыл это сделать