forked from Github-Mirrors/canaille
55 lines
1.4 KiB
Docker
55 lines
1.4 KiB
Docker
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"]
|