gpt4 book ai didi

php - 如何在 docker-compose 文件中动态获取主机 ip?

转载 作者:搜寻专家 更新时间:2023-10-31 20:59:38 26 4
gpt4 key购买 nike

对于 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 地址?

最佳答案

没有可以获取主机 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.

祝你好运:)

关于php - 如何在 docker-compose 文件中动态获取主机 ip?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46235566/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com