# syntax=docker/dockerfile:labs FROM python:3.11-alpine AS builder ARG BOUNCA_VERSION=[[ .bounca.version ]] workdir /opt RUN set -euxo pipefail &&\ apk --no-cache add \ curl \ ca-certificates \ rdfind \ git \ nodejs \ npm \ make \ &&\ git clone --depth=1 --branch=release/${BOUNCA_VERSION} https://gitlab.com/bounca/bounca.git &&\ cd bounca &&\ rm -rf .git &&\ python3 -m venv venv &&\ source /opt/bounca/venv/bin/activate &&\ pip --no-cache-dir install -r requirements.txt &&\ pip --no-cache-dir install \ gunicorn \ &&\ mkdir -p /var/log/bounca/ &&\ cp /opt/bounca/etc/bounca/services.yaml.example /opt/bounca/etc/bounca/services.yaml &&\ ./manage.py collectstatic --link --noinput &&\ rm -f /opt/bounca/etc/bounca/services.yaml &&\ sed -i -E 's|/etc/bounca/services.yaml|/tmp/services.yaml|g' /opt/bounca/bounca/settings.py &&\ rm -rf docs &&\ find /opt/bounca -type d -name '__pycache__' -exec rm -rf "{}" + &&\ cd /opt/bounca/front &&\ npm install &&\ export NODE_OPTIONS=--openssl-legacy-provider &&\ make production &&\ find ./ -maxdepth 1 \! -name dist -exec rm -rf "{}" \; &&\ rm -f results.txt &&\ rdfind /opt FROM python:3.11-alpine MAINTAINER [[ .docker.maintainer ]] ENV PATH=/opt/bounca/venv/bin:${PATH} \ BOUNCA_UNIX_SOCKET=/tmp/bounca.sock \ BOUNCA_HOST='*' \ DJANGO_SETTINGS_MODULE=bounca.docker_settings \ BOUNCA_BIND_ADDR=0.0.0.0:8749 \ BOUNCA_DB_NAME=bounca \ BOUNCA_DB_USER=bounca \ BOUNCA_DB_PASSWORD=bounca \ BOUNCA_DB_HOST=localhost \ BOUNCA_DB_PORT=5432 \ BOUNCA_DJANGO_SECRET=changeme \ BOUNCA_SMTP_SERVER=127.0.0.1 \ BOUNCA_SMTP_PORT=25 \ BOUNCA_ADMIN_EMAIL=admin@localhost \ BOUNCA_FROM_EMAIL=no-reply@localhost \ BOUNCA_ADMIN_USER=admin \ BOUNCA_ADMIN_PASSWORD=password \ BOUNCA_PUBLIC_DIR=/tmp/public \ BOUNCA_MODE=all-in-one ADD https://git.lapiole.org/nomad/base_tools.git#master / COPY --from=builder /opt /opt RUN set -euxo pipefail &&\ apk --no-cache add \ tini \ curl \ gettext \ openssl \ nginx \ postgresql16-client COPY --from=[[ .docker.repo ]][[ .docker.base_images.alpine.image ]] /usr/local/bin/minit /usr/local/bin/minit COPY root/ / WORKDIR /opt/bounca EXPOSE 8749 ENTRYPOINT ["tini", "--", "/entrypoint.sh"] CMD ["bounca"]