如何在Dockerfile中自动插入IP地址

时间:2019-02-13 11:23:24

标签: php docker xdebug

我正在尝试在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地址,但是它不起作用,有什么主意吗?如果您采用其他方法,我会很高兴听到如何做。

1 个答案:

答案 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