2017-01-20 2 views
0

Я использую docker-compose для управления средой разработки. Одним из компонентов является обратный прокси Apache. Я установил httpd-vhosts.conf, чтобы включить в него хост, который по сути проксирует запрос обратно на хост.Как передать информацию с хоста на докер

Конфигурируется следующим образом.

FROM httpd:2.4 
#ssl 
ADD ./server.crt /usr/local/apache2/conf/ 
ADD ./server.key /usr/local/apache2/conf/ 
ADD ./server-bundle.crt /usr/local/apache2/conf/ 

#vhosts 
ADD ./httpd-vhosts.conf /usr/local/apache2/conf/extra 

RUN echo "Configuring Vhost" && \ 
sed -i '[email protected]#Include conf/extra/[email protected] conf/extra/[email protected]' /usr/local/apache2/conf/httpd.conf 

# Exposed ports 
EXPOSE 80 
EXPOSE 443 

Как-то мне нужно передать в текущем IP-адресе шлюза хозяина в HTTPd-vhosts.conf

В настоящее время это трудно закодированный как этот

<VirtualHost *:80> 
    ProxyPass /http://10.0.2.2:8090/ 
    ProxyPassReverse /http://10.0.2.2:8090/ 

    ErrorLog "logs/cf.e-change.co-error_log" 
    CustomLog "logs/cf.e-change.co-access_log" common  
</VirtualHost 

Если я запускаю следующую команду netstat -nr | grep '^0\.0\.0\.0' | awk '{print $2}'

Это дает мне IP-адрес, который необходимо передать в контейнер как переменную окружения.

Что было бы лучше всего для этого?

Большое спасибо!

ответ

0

Вы можете передать переменные окружения из Docker Compose в контейнер. Например. со следующими Докер-compose.yml:

version: '2' 

services: 
    test: 
    image: busybox 
    command: env 
    environment: 
     - MY_VAR 

Вы можете экспортировать my_var, или просто передать его на той же командной строке:

$ MY_VAR="hello world" docker-compose up 
Creating test_test_1 
Attaching to test_test_1 
test_1 | PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 
test_1 | HOSTNAME=a3b5b5bf4afd 
test_1 | MY_VAR=hello world 
test_1 | HOME=/root 
test_test_1 exited with code 0 
+0

Привет, спасибо это хорошо выглядит. есть ли способ передать вещи в результате сценария? Думаю, я могу создать Makefile, который передает эту информацию, хотя – Istvano

+0

Не внутри compose yml, вам нужно сделать свою собственную оболочку для вызова композиции с правильными переменными. Обратите внимание, что вы не ограничены созданием, есть также 'docker run -e MY_VAR busybox env' – BMitch