48 lines
875 B
Docker
48 lines
875 B
Docker
ARG PYTHON_VERSION=3.12
|
|
|
|
FROM python:${PYTHON_VERSION}-alpine AS base
|
|
|
|
ENV PYTHONUNBUFFERED=1 \
|
|
PIP_DISABLE_PIP_VERSION_CHECK=on \
|
|
DEBIAN_FRONTEND=noninteractive \
|
|
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} \
|
|
&& :
|
|
|
|
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"]
|
|
|
|
FROM deps as production
|
|
|
|
WORKDIR /app
|
|
|
|
COPY --chown=django . .
|
|
|
|
CMD ["run.sh"]
|