Как сделать запрос cURL между двумя докерами? - PullRequest
0 голосов
/ 29 мая 2019

Я работаю с докером в разных проектах. У меня есть nginx conatainer и два контейнера php: один для моих проектов в php5.6, а другой для проектов php7.0.

Мне нужно сделать запрос cURL между моими двумя php-контейнерами (от 5.6 до 7), но я понятия не имею, как это сделать. Я пробовал что-то с другим файлом хоста, но у меня только тайм-аут соединения или соединение отказано.

curl -X GET 'hostUrl'

Когда hostUrl является ip-докером php7, тайм-аут соединения истекает, а когда hostUrl равен 127.0.0.1, я получаю сообщение об ошибке соединения отказано.

Они находятся в одной сети в моем docker-compose.

Что я могу сделать, чтобы решить мою проблему?

Спасибо

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Имя вашего контейнера - это имя хоста контейнера.

Если у вас есть контейнеры с именами webphp5 и webphp7.Вы можете сделать что-то вроде этого:

$ docker exec -it webphp5 bash #login into the container via console
$ curl -X GET 'webphp7'

Это свернуть контейнер you webphp7 при условии, что у вас есть открытые порты, к которым вы пытаетесь получить доступ.

0 голосов
/ 29 мая 2019

Если два контейнера находятся в одной докерной сети;то есть вы указали два контейнера в одном файле docker-composer.yml, тогда вы сможете общаться с другим контейнером, просто используя имя хоста контейнера.

Если два контейнера не находятся в одном докересети, вы можете сделать так, чтобы оба контейнера выставляли свой частный порт и общались через хост-машину.

Например, если у вас есть контейнер "A", работающий на порту 9000, и контейнер "B", работающий на порту 8000;и вы хотите свернуться в контейнер "A" из "B", то вы можете сделать это:

<?php

// Get the docker host machine's ip:
$host_ip = exec("/sbin/ip route|awk '/default/ { print $3 }'");

// Now curl 
// $container_a_url = "http://{$host_ip}:9000"
...