From 47bda1e6d0a44f5483b3373489386e33911ba0c9 Mon Sep 17 00:00:00 2001 From: Mart124 <37041094+Mart124@users.noreply.github.com> Date: Mon, 25 Nov 2019 14:34:47 +0100 Subject: [PATCH] Rotate nginx logs (#601) * Rotate nginx logs * Create logrotate.sh * Update Dockerfile * Update entrypoint.sh * Update Dockerfile * Update logrotate.sh * No reason to disable logrotate * Update logrotate.sh * Update entrypoint.sh * typo * Avoid useless output * Use gosu --- util/Nginx/Dockerfile | 4 +++- util/Nginx/entrypoint.sh | 4 ++++ util/Nginx/logrotate.sh | 15 +++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 util/Nginx/logrotate.sh 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