:-) 🏕

Handling Environment Variables with NGINX

July 06, 2019

NGINX with docker

  • 設定ファイルの中に一部環境変数を適応したい
  • 環境変数を読み取るには Lua などで拡張することが必要
  • Docker 上に変更のための構造をできるだけ入れたくなかった => envsubst を使って置換する

Dockerfile

  • alpine を使っていると bash もなかったり sed もなかったりで conf を置換する方法がない
  • envsubst を使って入れ替えてしまうことが推奨されている?
FROM nginx:1.17.1-alpine
COPY ./nginx.conf /etc/nginx/nginx.conf
COPY ./conf.d/default.conf /etc/nginx/template/nginx.tpl.default.conf
COPY ./bin/docker-endpoint.sh /bin/docker-endpoint.sh
ENTRYPOINT ["bin/docker-endpoint.sh"]
#!/bin/ash
cat /etc/nginx/template/nginx.tpl.default.conf \
  | envsubst '$SERVER_NAME' \
  > /etc/nginx/conf.d/default.conf

echo "###############################"
echo "# SERVER_NAME=${SERVER_NAME}"
echo "###############################"

/usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf

Written by Keisuke Kan who lives and works in Japan building useful things. You should follow him on Twitter