如何在docker-compose文件中dynamic获取主机ip?

对于docker开发环境,我们使用的是docker-compose-file。 一切工作正常,我们真的很高兴,但有一个小问题,我会工作:

我们用xdebug安装php-fpm。 现在我们configuration它如下:

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进行debugging。 唯一的问题是,我们将一个IP“192.168.0.50”静态保存在docker-compose-file中。 所以每个员工都必须在运行之前将其改为自己的知识产权。

现在的问题是:在构build时dynamic获取主机IP地址是否更明智?

没有“魔术指令”可以获得主机IP地址,所以解决这个问题的唯一方法就是使用环境variables:

 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文件传递这个variables:

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

更多你可以阅读文档:

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

祝你好运 :)