33 lines
886 B
Docker
33 lines
886 B
Docker
# pull official base image
|
|
FROM python:3.11.2-slim-buster AS prod
|
|
|
|
# set working directory
|
|
WORKDIR /usr/src/app
|
|
|
|
# set environment variables
|
|
ENV PYTHONDONTWRITEBYTECODE 1
|
|
ENV PYTHONUNBUFFERED 1
|
|
ARG SECRET_KEY
|
|
ENV SECRET_KEY $SECRET_KEY
|
|
|
|
RUN apt-get update \
|
|
&& apt-get -y install netcat gcc curl \
|
|
&& apt-get clean \
|
|
&& groupadd -g 999 python \
|
|
&& useradd -r -u 999 -g python python \
|
|
&& python -m venv /usr/src/app/.venv \
|
|
&& chown -R python:python /usr/src/app
|
|
|
|
ENV PATH="/usr/src/app/.venv/bin:$PATH"
|
|
ENV PIP_NO_CACHE_DIR=off
|
|
USER 999
|
|
|
|
COPY --chown=python:python requirements.txt requirements.txt
|
|
RUN python -m pip install --upgrade pip && \
|
|
python -m pip install -r requirements.txt
|
|
|
|
COPY --chown=python:python . .
|
|
|
|
# run gunicorn
|
|
CMD ["/usr/src/app/.venv/bin/gunicorn", "src.api.main:app", "--worker-class", "uvicorn.workers.UvicornWorker", "--bind=0.0.0.0:5002"]
|