nginxのconfで環境変数を利用する
Dockerコンテナで動かすnginxの設定ファイルでホストのIPアドレスを参照する必要があったので、方法を調べました。
まずnginxの設定ファイルを用意します。 参照したい環境変数を"${HOST_IP_ADDRESS}"のように記述します。
proxy_pass http://${HOST_IP_ADDRESS}:8080;
つぎに、Dockerfileで起動時にenvsubstでnginxの設定ファイルに環境変数を埋め込むようにします。
CMD ["/bin/sh", "-c", "envsubst '$$HOST_IP_ADDRESS' < /etc/nginx/conf.d/config.template > /etc/nginx/conf.d/config.conf && nginx -g 'daemon off;'"]
最後に、Dockerコンテナを起動する際にenvオプションで環境変数を指定します。
HOST_IP_ADDRESS=`hostname -I | egrep -o '(192.168|172.17).[0-9]+.[0-9]+' | head -n 1` docker run -d --env="HOST_IP_ADDRESS=${HOST_IP_ADDRESS}" nginx
ちなみに、Apacheだと以下のように記述することで、環境変数参照することが可能です。
ProxyPass / http://${HOST_IP_ADDRESS}:8080/