fix(docker): stop COPYing removed alembic_location/alembic_poo into the image
pytest / test (push) Successful in 50s
docker-image / build-and-push (push) Successful in 3m52s

M1-T04 deleted the alembic_location / alembic_poo chains and their .ini files,
but the Dockerfile still COPYed those four paths, so the release image build
failed at 'COPY alembic_poo.ini ./' (path not found). Drop the four stale COPY
lines (only alembic_app remains). Add test_dockerfile_copy_sources_exist, which
asserts every Dockerfile COPY source exists in the build context, so this class
of breakage fails pytest instead of only surfacing in the image CI.

Verified with a real local 'docker build' (succeeds) and pytest (98 passed).
This commit is contained in:
2026-06-12 20:48:34 +02:00
parent 1e0b235cef
commit c1a5d7a425
2 changed files with 18 additions and 4 deletions
+18
View File
@@ -64,6 +64,24 @@ def test_image_defaults_to_uvicorn_only() -> None:
assert "poo_db_adopt" not in entrypoint
def test_dockerfile_copy_sources_exist() -> None:
"""Every path the Dockerfile COPYs from the build context must exist in the
repo, so the image build cannot break on a stale COPY of a removed path
(e.g. the retired alembic_location / alembic_poo chains)."""
dockerfile = (PROJECT_ROOT / "Dockerfile").read_text()
for raw_line in dockerfile.splitlines():
line = raw_line.strip()
if not line.startswith("COPY "):
continue
# Drop the "COPY" keyword and any flags (e.g. --from=, --chown=).
tokens = [t for t in line.split()[1:] if not t.startswith("--")]
# COPY <src...> <dest>: the last token is the destination.
for src in tokens[:-1]:
assert (PROJECT_ROOT / src).exists(), (
f"Dockerfile COPY source does not exist in the build context: {src}"
)
def test_migration_runner_initializes_and_is_idempotent(
tmp_path: Path, monkeypatch: pytest.MonkeyPatch
) -> None: