Variables in Nginx configuration (#853)

* Add envsubst binary to image

* Generate nginx.conf from template, with env-vars

* Remove nginx.conf, now generated from template

* Reload nginx config after writing file

Co-authored-by: Shane Kilkelly <shane.kilkelly@overleaf.com>
This commit is contained in:
Shane Kilkelly 2021-04-07 14:19:06 +01:00 committed by GitHub
parent 1540d1b891
commit f849b94005
5 changed files with 47 additions and 4 deletions

View file

@ -70,7 +70,7 @@ ADD ${baseDir}/runit /etc/service
# Configure nginx
# ---------------
ADD ${baseDir}/nginx/nginx.conf /etc/nginx/nginx.conf
ADD ${baseDir}/nginx/nginx.conf.template /etc/nginx/templates/nginx.conf.template
ADD ${baseDir}/nginx/sharelatex.conf /etc/nginx/sites-enabled/sharelatex.conf

View file

@ -30,6 +30,11 @@ RUN apt-get update \
/etc/nginx/sites-enabled/default \
/var/lib/apt/lists/*
# Add envsubst
# ------------
ADD ./vendor/envsubst /usr/bin/envsubst
RUN chmod +x /usr/bin/envsubst
# Install Grunt
# ------------
RUN npm install -g \

View file

@ -0,0 +1,34 @@
#!/bin/sh
set -e
## Generate nginx config files from templates,
## with environment variables substituted
nginx_dir='/etc/nginx'
nginx_templates_dir="${nginx_dir}/templates"
if ! [ -d "${nginx_templates_dir}" ]; then
echo "Nginx: no template directory found, skipping"
exit 0
fi
nginx_template_file="${nginx_templates_dir}/nginx.conf.template"
nginx_config_file="${nginx_dir}/nginx.conf"
if [ -f "${nginx_template_file}" ]; then
export NGINX_WORKER_PROCESSES="${NGINX_WORKER_PROCESSES:-4}"
export NGINX_WORKER_CONNECTIONS="${NGINX_WORKER_CONNECTIONS:-768}"
echo "Nginx: generating config file from template"
# Note the single-quotes, they are important.
# This is a pass-list of env-vars that envsubst
# should operate on.
envsubst '${NGINX_WORKER_PROCESSES} ${NGINX_WORKER_CONNECTIONS}' \
< "${nginx_template_file}" \
> "${nginx_config_file}"
echo "Nginx: reloading config"
service nginx reload
fi

View file

@ -1,10 +1,14 @@
## ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ##
## ! This file was generated from a template ! ##
## ! See /etc/nginx/templates/ ! ##
## ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ##
daemon off;
user www-data;
worker_processes 4;
worker_processes ${NGINX_WORKER_PROCESSES};
pid /run/nginx.pid;
events {
worker_connections 768;
worker_connections ${NGINX_WORKER_CONNECTIONS};
# multi_accept on;
}
@ -63,7 +67,7 @@ http {
##
# Uncomment it if you installed nginx-passenger
##
#passenger_root /usr;
#passenger_ruby /usr/bin/ruby;

BIN
server-ce/vendor/envsubst vendored Normal file

Binary file not shown.