axsmak
@axsmak
Создатель

Как выполнить http-запрос между двумя сайтами в laradock?

Есть два ларавел-проекта в докере (laradock) по схеме "один ларадок - много проектов"
|-- www/
   |-- laradock/
   |-- one/
   |-- two/

// /etc/hosts
127.0.0.1   one.test
127.0.0.1   two.test

// laradock/nginx/sites
one.conf
two.conf

У каждого проекта свой REST-API, которые проверены и работают с хоста с помощью postman/insomnia
Сейчас возникла необходимость использовать апи одного проекта из другого с помощью curl
Естественно они не видят друг друга
Собственно в этом и вопрос и проблема: как настроить ларадок таким образом, чтобы сайты видели друг друга?
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
@MadridianFox
Web-программист, многостаночник
Конкретно про ларадок не скажу, но объясню как оно вообще работает.

Когда контейнеры запускаются в одной сети, они доступны друг другу по доменам, которые равны названию контейнера. При запуске через docker-compose немного не так. Контейнеры видят друг друга по именам сервисов.
Т.е. если у вас вот такой docker-compose.yml
services:
   front:
      image: ....
   back:
       image: ....

то фронт сможет обратиться к бэку по домену back, примерно вот так:
file_get_contents("http://back:8080/path/to/file.txt");

Ещё, если вы хотите чтобы сервисы обращались друг к другу по публичным доменам, а не по внутренним, можете задать в docker-compose.yml у контейнеров hostname.
но в docker-compose.yml у контейнера можно задать его hostname,
вот так:
services:
   front:
      hostname: site1.ru
      image: ....
   back:
       hostname: site2.ru
       image: ....
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы