# syntax = docker/dockerfile:1.3 FROM alpine:3.19.1 ARG POSTORIUS_REF ARG DJ_MM3_REF ARG CLIENT_REF # Install packages and dependencies for postorius and hyperkitty Add user for # executing apps, change ownership for uwsgi+django files and set execution # rights for management script RUN --mount=type=cache,target=/root/.cache \ set -ex \ && apk add --no-cache --virtual .build-deps gcc libc-dev linux-headers libldap \ postgresql-dev mariadb-dev mariadb-connector-c python3-dev libffi-dev git cargo rust \ && apk add --no-cache --virtual .mailman-rundeps bash sassc tzdata \ postgresql-client mysql-client py3-mysqlclient curl mailcap \ python3 py3-pip libffi gettext py-cryptography \ && python3 -m pip install --break-system-packages -U pip setuptools wheel \ && python3 -m pip install --break-system-packages -U \ git+https://gitlab.com/mailman/mailmanclient \ git+https://gitlab.com/mailman/postorius \ uwsgi \ 'psycopg2<2.9' \ dj-database-url \ mysqlclient \ typing \ django-utils-six \ && python3 -m pip install --break-system-packages -U 'Django<3.2' \ && python3 -m pip install --break-system-packages -U \ git+https://gitlab.com/mailman/django-mailman3 \ && apk del .build-deps \ && addgroup -S mailman \ && adduser -S -G mailman mailman # Add needed files for uwsgi server + settings for django COPY mailman-web /opt/mailman-web # Add startup script to container COPY docker-entrypoint.sh /usr/local/bin/ RUN chown -R mailman /opt/mailman-web/ \ && chmod u+x /opt/mailman-web/manage.py WORKDIR /opt/mailman-web # Expose port 8000 for http and port 8080 for uwsgi # (see web/mailman-web/uwsgi.ini#L2-L4) EXPOSE 8000 8080 # Use stop signal for uwsgi server STOPSIGNAL SIGINT ENTRYPOINT ["docker-entrypoint.sh"] CMD ["uwsgi", "--ini", "/opt/mailman-web/uwsgi.ini"]