如何在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.
祝你好运 :)