canaille-globuzma/Dockerfile

56 lines
1.4 KiB
Text
Raw Permalink Normal View History

FROM python AS builder
RUN \
apt update && \
apt -y upgrade && \
apt install -y \
build-essential \
libldap2-dev \
libsasl2-dev \
libssl-dev
COPY uv.lock pyproject.toml /opt/canaille/
RUN pip install uv
COPY canaille /opt/canaille/canaille
WORKDIR /opt/canaille
RUN uv sync --all-extras --upgrade
# We build a python wheel to install on the definitive docker image
RUN uv build --wheel
# We create a list of all the requirements to install next to canaille on the definitive docker image
RUN uv pip compile pyproject.toml --all-extras -o requirements.txt
WORKDIR /opt/canaille/dist
# We build these two modules here to avoid including build libraries on the definitive docker image
RUN pip wheel python-ldap uwsgi
FROM python:slim
# We need libxml2 for uwsgi to work
RUN \
apt update && \
apt -y upgrade && \
apt install -y \
libxml2
# I create a volume so that I can mount it in docker using -v ./database:/opt/canaille/database
RUN mkdir -p /opt/canaille/database
COPY --from=builder /opt/canaille/dist /opt/canaille/dist
COPY --from=builder /opt/canaille/requirements.txt /opt/canaille/requirements.txt
RUN pip install --find-links /opt/canaille/dist canaille python-ldap uwsgi
RUN pip install -r /opt/canaille/requirements.txt
COPY uwsgi.ini /opt/canaille
WORKDIR /opt/canaille
ENTRYPOINT ["uwsgi","--ini","uwsgi.ini"]