diff --git a/.dockerignore b/.dockerignore index 9720fef..b24c25f 100644 --- a/.dockerignore +++ b/.dockerignore @@ -17,7 +17,8 @@ uploads/ *.sqlite3 # Entwicklung -tests/ +# tests/ bleibt bewusst im Kontext: Dockerfile.test braucht sie. +# Das Anwendungs-Image kopiert sie nicht mit. .pytest_cache/ .venv/ venv/ diff --git a/.gitea/workflows/docker-image.yml b/.gitea/workflows/docker-image.yml index 3f63e61..974db48 100644 --- a/.gitea/workflows/docker-image.yml +++ b/.gitea/workflows/docker-image.yml @@ -28,10 +28,12 @@ jobs: - name: Tests run: | set -eu - docker run --rm -v "$PWD":/app -w /app python:3.11-slim bash -c ' - pip install --quiet -r requirements-dev.txt - python -m pytest -q - ' + # Über den Build-Kontext statt per Bind-Mount: läuft der Runner + # selbst in einem Container, zeigt $PWD auf einen Pfad, den der + # Docker-Daemon des Hosts nicht kennt - der Mount wäre leer und + # die Tests liefen ohne Fehlermeldung ins Leere. + docker build -f Dockerfile.test -t kleiderboerse-tests . + docker run --rm kleiderboerse-tests - name: Version bestimmen id: meta diff --git a/Dockerfile.test b/Dockerfile.test new file mode 100644 index 0000000..447fc47 --- /dev/null +++ b/Dockerfile.test @@ -0,0 +1,18 @@ +# Nur zum Testen - baut die Testumgebung samt Quellcode ins Image. +# +# Bewusst ohne Bind-Mount: läuft der CI-Runner selbst in einem Container, +# zeigt $PWD auf einen Pfad, den der Docker-Daemon des Hosts nicht kennt. +# Der Mount wäre dann leer und die Tests liefen ins Leere - ohne +# Fehlermeldung. Über den Build-Kontext kommt der Code zuverlässig hinein. +FROM python:3.11-slim + +WORKDIR /app +COPY requirements.txt requirements-dev.txt ./ +RUN pip install --no-cache-dir -r requirements-dev.txt + +COPY alembic.ini ./ +COPY alembic/ ./alembic/ +COPY app/ ./app/ +COPY tests/ ./tests/ + +CMD ["python", "-m", "pytest", "-q"]