diff --git a/util/Nginx/Dockerfile b/util/Nginx/Dockerfile index eab4b87f76..362de62023 100644 --- a/util/Nginx/Dockerfile +++ b/util/Nginx/Dockerfile @@ -13,12 +13,14 @@ COPY proxy.conf /etc/nginx COPY mime.types /etc/nginx COPY security-headers.conf /etc/nginx COPY security-headers-ssl.conf /etc/nginx +COPY logrotate.sh / COPY entrypoint.sh / EXPOSE 8080 EXPOSE 8443 -RUN chmod +x /entrypoint.sh +RUN chmod +x /entrypoint.sh \ + && chmod +x /logrotate.sh HEALTHCHECK CMD curl --insecure -Lfs https://localhost:8443/alive || curl -Lfs http://localhost:8080/alive || exit 1 diff --git a/util/Nginx/entrypoint.sh b/util/Nginx/entrypoint.sh index 56dd12c9e7..8c7a3d8639 100644 --- a/util/Nginx/entrypoint.sh +++ b/util/Nginx/entrypoint.sh @@ -41,4 +41,8 @@ chown -R $USERNAME:$GROUPNAME /var/run/nginx chown -R $USERNAME:$GROUPNAME /var/cache/nginx chown -R $USERNAME:$GROUPNAME /var/log/nginx +# Launch a loop to rotate nginx logs on a daily basis + +gosu $USERNAME:$GROUPNAME /bin/sh -c "/logrotate.sh loop >/dev/null 2>&1 &" + exec gosu $USERNAME:$GROUPNAME nginx -g 'daemon off;' diff --git a/util/Nginx/logrotate.sh b/util/Nginx/logrotate.sh new file mode 100644 index 0000000000..535f708915 --- /dev/null +++ b/util/Nginx/logrotate.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +while true +do + [ "$1" == "loop" ] && sleep $((24 * 3600 - (`date +%H` * 3600 + `date +%M` * 60 + `date +%S`))) + ts=$(date +%Y%m%d_%H%M%S) + mv /var/log/nginx/access.log /var/log/nginx/access.$ts.log + mv /var/log/nginx/error.log /var/log/nginx/error.$ts.log + kill -USR1 `cat /var/run/nginx/nginx.pid` + sleep 1 + gzip /var/log/nginx/access.$ts.log + gzip /var/log/nginx/error.$ts.log + find /var/log/nginx/ -name "*.gz" -mtime +32 -delete + [ "$1" != "loop" ] && break +done