我使用具有以下容器的多项目结构运行laradock 7.0.0:
docker-compose up -d apache2
这将运行php-fpm和apache2
我将hosts文件配置为连接到localhost:
的/ etc /主机
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 include:
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。当我得到apache2容器的ip adres:
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
我在php-fpm上修改了hosts文件
docker exec -ti laradock_php-fpm_1 bash
nano /etc/hosts
添加规则:
172.22.0.4 myproject.local
比file_get_contents有效。此修复程序的问题是apache2容器的ip并不总是相同。而且我每次都要为每个项目做这件事。
有没有办法修改Dockerfile或docker-compose.yml,一次为每个项目链接php-fpm到apache2?