Merge branches 'dev' and 'dev' of https://gitea.kuijper.es/jkuijperm/expenses_manager into dev

This commit is contained in:
JKuijperM 2026-09-29 17:34:02 +02:00
commit 466e51c703
4 changed files with 61 additions and 0 deletions

27
.dockerignore Normal file
View File

@ -0,0 +1,27 @@
# Secrets — these must never end up in an image layer.
.env
db.env
*.env
!.env.example
# Version control and IDE noise.
.git
.gitignore
.vscode
.idea
# Local artifacts that would otherwise be copied in by COPY.
__pycache__/
*.py[cod]
*.bak
venv/
.venv/
db.sqlite3
staticfiles/
.pytest_cache/
.coverage
htmlcov/
# Documentation and planning, not needed at runtime.
*.md
LICENSE

3
.gitignore vendored
View File

@ -129,6 +129,7 @@ venv/
ENV/ ENV/
env.bak/ env.bak/
venv.bak/ venv.bak/
db.env
# Spyder project settings # Spyder project settings
.spyderproject .spyderproject
@ -161,3 +162,5 @@ cython_debug/
# option (not recommended) you can uncomment the following to ignore the entire idea folder. # option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/ #.idea/
staticfiles/
*.bak

31
Dockerfile Normal file
View File

@ -0,0 +1,31 @@
FROM python:3.11-slim
# Fail fast and log straight to stdout, so `docker-compose logs` is useful.
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1
WORKDIR /app
# Dependencies first: this layer is cached and only rebuilt when
# requirements.txt changes, not on every code change.
COPY expenses_manager/requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Copy the Django project itself, not the repository root, so that /app is
# the directory holding manage.py. The previous version copied the repo root
# into /app/expenses_manager, which left manage.py and wsgi.py one level
# deeper than the gunicorn command expected.
COPY expenses_manager/ .
# Collect static files at build time so the running container never needs to
# write to its own filesystem. SECRET_KEY is required by settings.py when
# DEBUG is False, but collectstatic never uses it, so a throwaway value is
# enough — the real one comes from the environment at runtime.
RUN SECRET_KEY=build-time-placeholder \
DEBUG=False \
ALLOWED_HOSTS=localhost \
python manage.py collectstatic --noinput
EXPOSE 8000
CMD ["gunicorn", "expenses_manager.wsgi:application", "--bind", "0.0.0.0:8000"]

Binary file not shown.