Я запускаю 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 для каждого проекта за один раз?
Задача ещё не решена.
Других решений пока нет …