84 lines
2.4 KiB
Docker
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"]
|