【发布时间】:2017-09-15 08:54:52
【问题描述】:
对于 docker 开发环境,我们使用的是 docker-compose-file。一切正常,我们真的很高兴,但是我想解决一个小问题:
我们用 xdebug 安装 php-fpm。现在我们配置如下:
PHP-Dockerfile:
FROM php:7.1-fpm
RUN docker-php-ext-install pdo_mysql \
&& docker-php-ext-install json \
&& pecl install xdebug \
&& echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_autostart=off" >> /usr/local/etc/php/conf.d/xdebug.ini
docker-compose.yml:
services:
//[...]
php:
build: ./docker/php/
container_name: dev-php
expose:
- 9000
volumes:
- .:/var/www/html
environment:
XDEBUG_CONFIG: remote_host=192.168.0.50
PHP_IDE_CONFIG: "serverName=docker"
此设置运行良好:我们可以在本地系统的 IDE 中使用 xdebug 进行调试。唯一的问题是,我们在 docker-compose-file 中保存了一个静态 IP“192.168.0.50”。所以每个员工在运行前都得把它改成自己的IP...
现在的问题是: 构建时是否有更智能的方法来动态获取主机 IP 地址?
【问题讨论】:
-
相当无关的问题:为什么需要暴露
9000端口?您是否尝试从外部连接到 php-fpm?它提供什么? -
我正在使用 phpstorm,我需要这个端口用于 xdebug。
-
感谢您的链接,Tarun。我会牢记在心,以备不时之需。目前,您使用 ssh 隧道的解决方案对我来说有点太复杂了,因为我想让事情变得简单...... ;)
-
“我正在使用 phpstorm,我需要这个端口用于 xdebug” 但是...... 1)它是 xdebug 连接到 IDE(传出连接)而不是其他方式...因此您不需要公开 xdebug 端口... 2)您说您正在使用 php-fpm ...默认情况下它也使用 TCP 9000 端口...所以如果有的话...您将暴露 php-fpm 而不是 xdebug...
标签: php docker docker-compose xdebug