2017-09-15 40 views
2

对于码头开发环境,我们使用的是docker-compose-file。一切工作正常,我们很高兴,但有一个小问题,我会工作:如何在docker-compose文件中动态获取主机ip?

我们安装php-fpm与xdebug。现在我们进行如下配置:

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 

泊坞窗,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。唯一的问题是,我们将一个IP“192.168.0.50”静态保存在docker-compose文件中。所以每个员工HAST将其更改为自己的IP运行前...

现在的问题是: 是有一个更聪明的方式建设时,动态获取主机的IP地址?

+0

而不是无关的问题:为什么你需要暴露'9000'端口?你是否试图从外部连接到php-fpm?它提供了什么? – LazyOne

+0

看到这篇文章http://tarunlalwani.com/post/debugging-php-xdebug-docker/ –

+0

我使用phpstorm,我需要这个端口为xdebug。 – j0nnybrav0

回答

2

有没有“神奇的命令”,将获得主机的IP地址,所以要解决这个问题的唯一途径是解决与环境变量:

services: 
    //[...] 
    php: 
    build: ./docker/php/ 
    container_name: dev-php 
    expose: 
    - 9000 
    volumes: 
    - .:/var/www/html 
    environment: 
    XDEBUG_CONFIG: remote_host=${WORKER_IP} 
    PHP_IDE_CONFIG: "serverName=docker" 

然后通过.ENV文件传递这个变量:

https://docs.docker.com/compose/env-file/ 

更多您可以在文档阅读:

https://docs.docker.com/compose/environment-variables/#configuring-compose-using-environment-variables. 

好运: )

+0

嗨Krzysztof,并感谢您的回复。不幸的是,docker-compose并没有为docker构建提供“-e”属性(https://docs.docker.com/compose/reference/up/)。 目前,我唯一的工作方式是使用env文件,每个员工都有自己的设置 – j0nnybrav0

+0

是的,你说的对,对不起。答案已编辑。 –