# automx2 — the autoconfig/autodiscover responder, carried by the mailu module as its own # artifact: it is a config-baked sidecar of this mail server, not a standalone application # (novox/hq ADR 0015 draws that line at applications). # # The base is named rather than pinned (novox/hq issue 044): declared in module.json's # `build.on`. The build context is the module's own directory; every ADD says so. ARG PYTHON_BASE FROM ${PYTHON_BASE} RUN apk add --no-cache bash sqlite WORKDIR /automx2 ADD automx/files/setupvenv.sh /automx2/setupvenv.sh ADD automx/files/start /automx2/start ADD automx/files/setup /automx2/setup ADD automx/files/setup-db /automx2/setup-db ADD automx/files/add-domains /automx2/add-domains RUN chmod u+x setupvenv.sh start add-domains setup setup-db RUN ./setupvenv.sh \ && . .venv/bin/activate \ && pip install automx2==2021.6 # The launcher `start` expects. In the predecessor's image this wrapper appeared during a build # step that never made it into the files this module carries — the image worked and the recipe # could not reproduce it. Written here explicitly, verbatim from the proven image, so the build # is the whole truth about the image again. RUN mkdir -p .venv/scripts && printf '%s\n' \ '#!/usr/bin/env bash' \ 'set -euo pipefail' \ '. .venv/bin/activate' \ "export FLASK_ENV='production'" \ "export FLASK_APP='automx2.server:app'" \ 'flask "$@"' > .venv/scripts/flask.sh && chmod +x .venv/scripts/flask.sh ENV AUTOMX2_CONF=/etc/automx2.conf ADD automx/files/automx2.conf /etc/automx2.conf # VOLUME deliberately absent: the anonymous /data volume is exactly what lost db.sqlite on # every recreate (measured on novox 2026-08-10). The manifest binds a real directory instead. ENTRYPOINT ["/bin/sh"] CMD ["./start"] EXPOSE 4243