The predecessor's image carried .venv/scripts/flask.sh, created by a build step that never made it into the files this module holds — the image worked and its recipe could not reproduce it, caught the moment the mesh built it from source (exit 127 crash loop at cutover). The wrapper is now written explicitly, verbatim from the proven image, so the recipe is the whole truth about the image.
45 lines
1.8 KiB
Docker
45 lines
1.8 KiB
Docker
# 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
|
|
|
|
# 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
|