如何将信息从主机传递到docker

时间:2017-01-20 16:55:26

标签: docker docker-compose

我使用docker-compose来管理开发环境。一个组件是Apache反向代理。我设置了httpd-vhosts.conf以包含一个vhost,它将请求实际代理回主机。

按以下方式配置。

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 's@#Include conf/extra/httpd-vhosts.conf@Include conf/extra/httpd-vhosts.conf@' /usr/local/apache2/conf/httpd.conf

# Exposed ports
EXPOSE 80
EXPOSE 443

不知何故,我需要将HOST的当前网关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。

最好的做法是什么?

非常感谢!

1 个答案:

答案 0 :(得分:0)

您可以将环境变量从Docker Compose传递到容器中。例如。使用以下docker-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
相关问题