diff --git a/.gitignore b/.gitignore index d88bdbb..c1601d0 100644 --- a/.gitignore +++ b/.gitignore @@ -52,6 +52,7 @@ cover/ *.mo *.pot *.log +*.log.* local_settings.py db.sqlite3 db.sqlite3-journal @@ -89,6 +90,7 @@ letsencrypt/ experimentations/cache/ experimentations/cache-augustes.ical experimentations/events-augustes.json +logs-nginx # MacOS .DS_Store diff --git a/deployment/Dockerfile-nginx b/deployment/Dockerfile-nginx new file mode 100644 index 0000000..db9d9a3 --- /dev/null +++ b/deployment/Dockerfile-nginx @@ -0,0 +1,18 @@ +FROM nginx:latest + +RUN apt-get update && \ + apt-get install -y logrotate cron && \ + rm -rf /var/lib/apt/lists/* + +RUN rm -f /var/log/nginx/access.log /var/log/nginx/error.log +RUN chmod 755 /var/log/nginx +RUN chown root:nginx /var/log/nginx + +COPY deployment/scripts/nginx/nginx.logrotate /etc/logrotate.d/nginx +RUN chmod 644 /etc/logrotate.d/nginx + + +COPY deployment/scripts/nginx/entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh + +CMD ["/entrypoint.sh"] diff --git a/deployment/scripts/nginx/entrypoint.sh b/deployment/scripts/nginx/entrypoint.sh new file mode 100644 index 0000000..dbd2a54 --- /dev/null +++ b/deployment/scripts/nginx/entrypoint.sh @@ -0,0 +1,4 @@ +#!/bin/bash +cron + +nginx -g 'daemon off;' diff --git a/deployment/scripts/nginx/nginx.logrotate b/deployment/scripts/nginx/nginx.logrotate new file mode 100644 index 0000000..17d3f4c --- /dev/null +++ b/deployment/scripts/nginx/nginx.logrotate @@ -0,0 +1,14 @@ +/var/log/nginx/*.log { + su root nginx + daily + missingok + rotate 7 + compress + delaycompress + notifempty + create 640 root nginx + sharedscripts + postrotate + [ -f /run/nginx.pid ] && kill -USR1 `cat /run/nginx.pid` + endscript +} diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index eff08a0..bb96697 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -1,5 +1,3 @@ -version: '3.7' - services: backend: container_name: "${APP_NAME}-backend" @@ -69,15 +67,16 @@ services: command: [ "/bin/bash", "/app/deployment/scripts/wait-db.sh", "/app/deployment/scripts/celery/start-beat.sh" ] nginx: - image: nginx:latest container_name: "${APP_NAME}-nginx" + build: + context: . + dockerfile: deployment/Dockerfile-nginx volumes: - ./deployment/scripts/nginx/nginx.conf:/etc/nginx/nginx.conf:ro - static_files:/usr/src/app/static - media_files:/usr/src/app/media - - log_files:/var/log/nginx + - ./logs-nginx:/var/log/nginx env_file: .env.prod - command: /bin/sh -c "rm /var/log/nginx/access.log /var/log/nginx/error.log && nginx -g 'daemon off;'" ports: - 6380:80 depends_on: