-
Remi PLANEL authoredRemi PLANEL authored
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"]