我使用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。
最好的做法是什么?
非常感谢!
答案 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