Dockerize - приложение Rails curl: (7) Не удалось подключиться к localhost - PullRequest
0 голосов
/ 02 июня 2019

У меня есть приложение ruby ​​on rails.Это работает на моем компьютере Mac.Я хочу докеризировать его.

Файл Docker находится ниже:

....
EXPOSE 3000

# Start the main process.
CMD ["rails", "server"]

Я создаю приложение, и оно отлично работает.

$docker build -t my-rails-app .

Идентификатор образа Docker

$docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
1f02e0e60da5        my-rails-app        "rails server"      5 minutes ago       Up 5 minutes        0.0.0.0:3000->3000/tcp   dazzling_hamilton

Получить IP-адрес

$docker inspect 1f02e0e60da5 | grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAddress": "172.17.0.2",

Нет ответа на запрос http $ curl 172.17.0.2:3000

curl: (7) Failed to connect to 172.17.0.2 port 3000: Operation timed out

Ответы [ 3 ]

0 голосов
/ 02 июня 2019

Измените свой CMD для этого

CMD rails s -p 3000 -b '0.0.0.0'

Вам не нужно получать ip докера, потому что он выставляется на локальном хосте, поэтому вы можете просто сделать

curl localhost:3000

0 голосов
/ 02 июня 2019

Причина, по которой вы не можете сделать curl 172.17.0.2:3000, потому что этот IP принадлежит внутреннему сетевому контейнеру Docker. Если у вас есть другой контейнер в той же Docker Network, то это должно работать. Завершение контейнера приложения из другого контейнера (структура микросервиса).

Ваш адрес контейнера 0.0.0.0:3000->3000/tcp, вам нужно позвонить localhost, как я уже упоминал в комментариях. Сеть Docker соединяет ваш контейнер с сетью.

0 голосов
/ 02 июня 2019

Обновление Dockerfile

...
EXPOSE 3000

# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]

команда запуска:

curl -X GET   http://localhost:3000

У меня работает!

...