EatSmartシステム部ブログ

ウェブサイトの開発や運営に関する情報です。

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/