Laradock php-fpm apache2 file_get_contents Соединение отклонено - PullRequest
0 голосов
/ 24 апреля 2018

Я запускаю laradock 7.0.0 с многопроектной структурой со следующими контейнерами:

docker-compose up -d apache2

Это будет запускать php-fpm и apache2

Я настроил файл hosts для подключения к localhost:

/ и т.д. / хосты

127.0.0.1    myproject.local

Я создал конфигурацию сайта для моего apache2:

laradock / apache2 / сайты / myproject.conf

<VirtualHost *:80>
  ServerName myproject.local
  DocumentRoot /var/www/myproject/public/
  Options Indexes FollowSymLinks

  <Directory "/var/www/myproject/public/">
    AllowOverride All
    <IfVersion < 2.4>
      Allow from all
    </IfVersion>
    <IfVersion >= 2.4>
      Require all granted
    </IfVersion>
  </Directory>
</VirtualHost>

Я изменяю настройки php.ini, чтобы включить URL:

laradock / PHP-FPM / laravel.ini

allow_url_include=On

При переходе на myproject.local отображается веб-сайт. Пока проблем нет. Но когда я делаю file_get_contents, я получаю отказ в соединении:

$json = file_get_contents('http://myproject.local/test.json');
var_dump($json);
exit;

Ответ:

Warning: file_get_contents(http://myproject.local/test.json): failed to open stream: Connection refused in /var/www/myproject/public/test.json

Похоже, php-fpm не может найти apache2. Когда я получаю IP-адрес контейнера apache2:

docker exec -ti laradock_apache2_1 bash
ifconfig

Результат:

eth0 Link encap:Ethernet HWaddr 02:42:ac:16:00:04
inet addr:172.22.0.4

И я изменяю файл hosts на моем php-fpm

docker exec -ti laradock_php-fpm_1 bash
nano /etc/hosts

Добавить правило:

172.22.0.4 myproject.local

Чем работает file_get_contents. Проблема с этим исправлением состоит в том, что ip контейнера apache2 не всегда одинаков. И мне придется делать это каждый раз для каждого проекта.

Есть ли способ изменить Dockerfile или docker-compose.yml, чтобы связать php-fpm с apache2 для каждого проекта за один раз?

...