diff --git a/src/Handler.php b/src/Handler.php index 9f7efdfe8c8f95db1f7af2857c017cfde9b55a07..4f1bf15d88496a184e0a1fc01669e47a616a3423 100644 --- a/src/Handler.php +++ b/src/Handler.php @@ -222,6 +222,9 @@ class Handler { $extra = $this->composer->getPackage()->getExtra() + ['docker4drupal' => []]; $options = $extra['docker4drupal'] + [ 'projectname' => str_replace([' ', '-', '_', '.'], '', basename(getcwd())), + 'docker0' => [ + 'ip' => $this->getLocalIpv4('docker0'), + ], 'drupal' => [ 'version' => '8', ], @@ -259,4 +262,26 @@ class Handler { } } + private function getLocalIpv4($interface = NULL) { + $out = explode(PHP_EOL, shell_exec('LC_ALL=C /sbin/ifconfig')); + $local_addrs = array(); + $ifname = 'unknown'; + foreach ($out as $str) { + $matches = array(); + if (preg_match('/^([a-z0-9]+)(:\d{1,2})?(\s)+Link/', $str, $matches)) { + $ifname = $matches[1]; + if(strlen($matches[2])>0) { + $ifname .= $matches[2]; + } + } elseif (preg_match('/inet addr:((?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3})\s/', $str, $matches)) { + $local_addrs[$ifname] = $matches[1]; + } + } + + if (!isset($interface)) { + return $local_addrs; + } + return isset($local_addrs[$interface]) ? $local_addrs[$interface] : '127.0.0.1'; + } + } diff --git a/templates/docker-compose.yml.twig b/templates/docker-compose.yml.twig index d6ae7cb29f56b17abdfae1fa6354919143fbaafc..d508628697500d8ce21d9ea2fbbe298902d429c5 100644 --- a/templates/docker-compose.yml.twig +++ b/templates/docker-compose.yml.twig @@ -16,6 +16,10 @@ services: {% if php.xdebug %} PHP_XDEBUG: 1 PHP_XDEBUG_DEFAULT_ENABLE: 1 + PHP_XDEBUG_REMOTE_AUTOSTART: 1 + PHP_XDEBUG_REMOTE_HOST: {{ docker0.ip }} + PHP_IDE_CONFIG: serverName=Docker + PHP_XDEBUG_REMOTE_CONNECT_BACK: 1 {% endif %} volumes: - ./:/var/www/html