ARG PYTHON_VERSION=3.12 FROM python:${PYTHON_VERSION}-alpine AS base ENV PYTHONUNBUFFERED=1 \ PIP_DISABLE_PIP_VERSION_CHECK=on \ POETRY_VIRTUALENVS_CREATE=false \ VENV=/root/.venv RUN adduser --disabled-password --gecos "" django FROM base AS poetry ARG POETRY_VERSION=1.8.3 RUN : \ && python -m venv ${VENV} \ && . ${VENV}/bin/activate \ && pip install poetry==${POETRY_VERSION} \ && apk add gettext shadow \ && apk -v cache clean \ && : ENV PATH="${VENV}/bin:${PATH}" FROM poetry AS deps WORKDIR /app COPY pyproject.toml poetry.lock ./ RUN poetry install --no-interaction --no-ansi -vvv COPY scripts/ /usr/local/tmp-bin RUN : \ && chmod +x /usr/local/tmp-bin/* \ && mv /usr/local/tmp-bin/* /usr/local/bin \ && rmdir /usr/local/tmp-bin \ && : ENTRYPOINT ["entrypoint.sh"] CMD ["run.sh"] FROM deps AS development WORKDIR /app ARG GID=1000 ARG UID=1000 RUN : \ && groupmod django -g $GID \ && usermod django -u $UID -g $GID \ && : COPY --chown=django . . USER django CMD ["run-dev.sh"] FROM deps AS production WORKDIR /app COPY --chown=django . . USER django RUN : \ && ./manage.py compilemessages \ && ./manage.py collectstatic --noinput \ && :