bounca/images/bounca/Dockerfile

84 lines
2.4 KiB
Docker

# 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"]