# authentik-gate-sync: the authentik-gate ingress class. Turns each Ingress of # that class into an Authentik proxy gate plus the Traefik Ingress, ExternalName # Service and network policies in front of it. Standard library only, so the # image is the interpreter plus one file; runs unprivileged as its own user. # The unit tests gate the image: the final stage copies the controller out of # this stage, so a failing test fails the build. FROM python:3.15-slim@sha256:2da676046630d7bf14c6764ae1143dc7fa0377a53f94bf5a642f0b214aca5bce AS test WORKDIR /src COPY controller.py test_controller.py ./ RUN python3 -B -m unittest -v FROM python:3.15-slim@sha256:2da676046630d7bf14c6764ae1143dc7fa0377a53f94bf5a642f0b214aca5bce RUN useradd --system --no-create-home --shell /usr/sbin/nologin controller COPY --from=test /src/controller.py /opt/controller.py ENV PYTHONUNBUFFERED=1 USER controller ENTRYPOINT ["python3", "/opt/controller.py"]