Skip to content
Snippets Groups Projects
Dockerfile 1.16 KiB
FROM python:3.11.4-bookworm as requirements-stage

WORKDIR /tmp

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

RUN pip install poetry

COPY ./pyproject.toml ./poetry.lock* /tmp/

RUN poetry export -f requirements.txt --output requirements.txt --without-hashes

FROM python:3.11.4-slim-bookworm as django

RUN apt update -y && apt upgrade -y && apt install -y python3-dev libpq-dev cron

RUN useradd -ms /bin/bash worker && usermod -aG crontab worker

WORKDIR  /code


RUN echo "*/5 * * * * python /code/manage.py clear-sessions-history > /proc/1/fd/1 2>&1" >> /etc/cron.d/clean-session \
    && crontab -u worker /etc/cron.d/clean-session \
    && chmod u+s /usr/sbin/cron

RUN chown root:worker /var/run && chmod g+w /var/run
RUN touch /var/run/crond.pid && chown worker:worker /var/run/crond.pid

COPY --chown=worker:worker --from=requirements-stage /tmp/requirements.txt /code/requirements.txt

RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt

USER worker

COPY --chown=worker:worker . ./

EXPOSE 8000
# CMD ["service", "cron", "start"]
CMD ["gunicorn", "--timeout", "120", "--bind", ":8000", "defense_finder_api.wsgi:application"]