2

我使用带有以下容器的多项目结构运行 laradock 7.0.0:

docker-compose up -d apache2

这将运行 php-fpm 和 apache2

我将主机文件配置为连接到本地主机:

/etc/hosts

127.0.0.1    myproject.local

我为我的 apache2 创建了一个站点配置:

laradock/apache2/sites/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。当我得到 apache2 容器的 IP 地址时:

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 上的主机文件

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?

4

0 回答 0