The gitlist directory contains the Dockerized GitList web application used to browse Bioconductor package repositories.
The service runs as two cooperating processes inside a single container:
-
nginx – A lightweight web server that:
- Listens for HTTP requests from clients.
- Serves static assets (CSS, JS, images) directly for speed.
- Forwards requests that require PHP processing to
php-fpm.
-
php-fpm – The PHP FastCGI Process Manager that:
- Runs the GitList PHP code.
- Handles dynamic requests like rendering repository views, diffs, and commit history.
- Returns generated HTML back to
nginxover a FastCGI interface.
Flow of a request:
- User requests a GitList page (e.g.,
/packages/myPackage/commit/1234). nginxchecks if it’s a static file — if not, it proxies the request tophp-fpmvia FastCGI.php-fpmexecutes the GitList PHP code, which reads from the Git repositories mounted at/var/git.- The generated HTML is sent back through
nginxto the user’s browser.
This separation allows:
- Static files to be served very quickly without touching PHP.
- PHP code to run in a managed, pooled environment (improving performance and stability).
The GitList service’s access logs are analysed using GoAccess, a real-time log analyzer.
The GoAccess output is published as a password-protected dashboard at: https://code.bioconductor.org/logs
- Tracks visitor counts, request types, most popular repositories/pages.
- Monitors response codes, referrers, and bandwidth usage.
- Generates a live HTML report updated every second.
- The
/logsendpoint is protected by HTTP Basic Authentication configured innginx. Contact Mike Smith for details on the password or update thenginx-auth-secretin kubernetes.
To prevent large log files from filling the disk:
-
logrotateis configured to:- Rotate
nginxaccess and error logs on a daily schedule retaining the last 90 days. - Trigger GoAccess processing after rotation so that stats are up-to-date.
- Rotate
-
Kubernetes CronJob:
- Runs
logrotatedaily to ensure log files are rotated without manual intervention. - Sends a
kill -USR1 1message to the pods runningnginxandgoaccessto ensure they start using the newly created log files.
- Runs