Как автоматически вставить IP-адрес в Dockerfile - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь настроить Xdebug на моем контейнере Docker, поэтому мне нужно автоматически получить 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 голосов
/ 13 февраля 2019

Это просто, вам нужно создать файл 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
...