我正在尝试在Docker容器上设置Xdebug,因此我需要自动获取客户端IP(Mac和Linux),并且应该将其打印在Dockerfile中,这是我到目前为止所做的事情
RUN yes | 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=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_autostart=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_connect_back=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_host=$(ipconfig getifaddr en0)" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_port=9000" >> /usr/local/etc/php/conf.d/xdebug.ini
第5行应该从我的客户端获取IP地址,但是它不起作用,有什么主意吗?如果您采用其他方法,我会很高兴听到如何做。
答案 0 :(得分:0)
创建一个bash文件很容易。例如build.sh:
#!/usr/bin/env bash
rm .env
if [ ! -f .env ]; then
myip=
while IFS=$': \t' read -a line ;do
[ -z "${line%inet}" ] && ip=${line[${#line[1]}>4?1:2]} &&
[ "${ip#127.0.0.1}" ] && myip=$ip
done< <(LANG=C /sbin/ifconfig)
touch .env
echo IP=$myip >> .env
fi
运行bash文件,并在docker-compose文件中,将其与$ {IP}一起使用,例如:
version: '3'
services:
worker:
build: ./DockerFiles/Worker
ports:
- ${IP}:81