360e8f9eaf
Reviewed-on: #95 12 files changed (+149, -66) Key changes: 1. Monolithic container — Replaced the two-service compose setup (backend + frontend/caddy) with a single timetracker container. Caddy is now built into the image rather than running as a separate container. 2. Supervisord process manager — Added supervisor.conf and installed supervisor in the Dockerfile. entrypoint.sh now delegates to supervisord to manage three processes: Caddy, Gunicorn, and Qcluster — replacing manual trap/signaling logic. 3. Bundled Caddy — The Dockerfile now downloads and installs Caddy v2.9.1 directly into the image (/usr/local/bin/caddy). The Caddyfile was updated to use reverse_proxy localhost:8001 and serves static files from /home/timetracker/app/static. 4. Configurable deployment — Added .env.example with configurable environment variables: TZ, PUID/PGID, TIMETRACKER_EXTERNAL_PORT, DATA_DIR, CSRF_TRUSTED_ORIGINS. docker-compose.yml now references these with sensible defaults. 5. UID/GID flexibility — entrypoint.sh uses usermod/groupmod at startup to remap the timetracker user to the host-specified PUID/PGID, avoiding permission issues with mounted volumes. 6. Database & static files — settings.py now respects DATA_DIR env var for the SQLite database path. STATIC_ROOT changed to BASE_DIR / "static". 7. Dev improvements — New Caddyfile.dev (with browse enabled for static files) and updated Makefile dev-prod target runs Caddy alongside Django in development. 8. Tests — Re-enabled the test step in the Docker build GitHub Actions workflow.
24 lines
624 B
Bash
24 lines
624 B
Bash
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
PUID=${PUID:-1000}
|
|
PGID=${PGID:-100}
|
|
|
|
USERHOME=$(grep timetracker /etc/passwd | cut -d ":" -f6)
|
|
usermod -d "/root" timetracker
|
|
groupmod -o -g "$PGID" timetracker
|
|
usermod -o -u "$PUID" timetracker
|
|
usermod -d "${USERHOME}" timetracker
|
|
|
|
mkdir -p /home/timetracker/app/data /var/log/supervisor
|
|
chmod 755 /home/timetracker/app
|
|
chmod 755 /home/timetracker/app/.venv
|
|
|
|
chown "$PUID:$PGID" /home/timetracker/app/data
|
|
chown "$PUID:$PGID" /var/log/supervisor
|
|
|
|
python manage.py migrate
|
|
python manage.py collectstatic --clear --no-input
|
|
|
|
exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisor.conf
|