52 lines
1.1 KiB
Docker
52 lines
1.1 KiB
Docker
FROM python:3.11-slim-bookworm AS env-builder
|
|
|
|
WORKDIR /app
|
|
|
|
COPY pyproject.toml .
|
|
COPY poetry.lock .
|
|
|
|
# create virtual environment
|
|
RUN python -m venv /venv
|
|
|
|
# set python thingies, set environment variables and activate virtual environment
|
|
ENV \
|
|
PYTHONDONTWRITEBYTECODE=1 \
|
|
PYTHONUNBUFFERED=1 \
|
|
PATH="/venv/bin:$PATH"
|
|
|
|
RUN \
|
|
pip install poetry && \
|
|
# dump python dependencies into requirements file
|
|
poetry export --without-hashes --format=requirements.txt > requirements.txt && \
|
|
# install python libs
|
|
pip install -r requirements.txt --no-cache-dir --prefer-binary --no-deps --no-compile
|
|
|
|
|
|
FROM python:3.11-slim-bookworm
|
|
|
|
WORKDIR /app
|
|
|
|
COPY --from=env-builder /venv /venv
|
|
|
|
# set python thingies and activate virtual environment
|
|
ENV \
|
|
PYTHONDONTWRITEBYTECODE=1 \
|
|
PYTHONUNBUFFERED=1 \
|
|
PATH="/venv/bin:$PATH"
|
|
|
|
COPY manage.py .
|
|
COPY pyproject.toml .
|
|
COPY poetry.lock .
|
|
COPY db.template.sqlite3 db.sqlite3
|
|
COPY ./project ./project
|
|
|
|
# run as user www-data
|
|
USER 33
|
|
|
|
ENTRYPOINT [ "/venv/bin/gunicorn" ]
|
|
CMD [ \
|
|
"--bind", "0.0.0.0:8000", \
|
|
"--workers", "4", \
|
|
"project.wsgi" \
|
|
]
|