diff --git a/Dockerfile b/Dockerfile index 3e259dd..fd15b08 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,7 +9,7 @@ FROM alpine:latest RUN \ apk -U upgrade && \ - apk add nginx curl && \ + apk add nginx curl logrotate && \ mkdir -p /wwwroot /logs COPY docker/rootfs / @@ -24,4 +24,4 @@ RUN nginx -t HEALTHCHECK --timeout=10s CMD curl --silent --fail -o /dev/null http://127.0.0.1:80/ -ENTRYPOINT [ "/usr/sbin/nginx" ] +ENTRYPOINT [ "/bin/sh", "/app/entrypoint.sh" ] diff --git a/README.md b/README.md index a179400..08f11d6 100644 --- a/README.md +++ b/README.md @@ -78,3 +78,23 @@ services: ports: - 6080:80 ``` + +## Configure log rotation + +By default logs are stored in a volume mounted on `/logs` directory inside the container. +The access log file is `/logs/nginx.access.log` and it is rotate daily with a configurable retention, `7 days` by default. + +```yaml +version: "3.9" +services: + web: + image: git.libreschool.org/libreschool/libreschool.org:latest + restart: always + container_name: libreschool_website + volumes: + - ./logs:/logs + environment: + LOG_DAYS: 14 + ports: + - 6080:80 +``` diff --git a/docker/rootfs/app/entrypoint.sh b/docker/rootfs/app/entrypoint.sh new file mode 100755 index 0000000..3d612db --- /dev/null +++ b/docker/rootfs/app/entrypoint.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +############ CHECK LOG DIRECTORY +mkdir -p /logs +chown nginx:www-data /logs +chmod 0755 /logs + +############ CONFIGURE LOGROTATE +LOG_DAYS=${LOG_DAYS:-7} + +############ START CRON +crond -b +cat >/etc/logrotate.d/nginx <