-
Notifications
You must be signed in to change notification settings - Fork 1
/
Dockerfile
43 lines (30 loc) · 1.19 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
FROM python:3.9-slim-buster as poetry-base
ENV \
# Python env vars
# https://docs.python.org/3/using/cmdline.html#envvar-PYTHONUNBUFFERED
PYTHONUNBUFFERED=1 \
# Pip env vars (https://pip.pypa.io/en/stable/user_guide/#environment-variables)
PIP_NO_CACHE_DIR=off \
PIP_DISABLE_PIP_VERSION_CHECK=on \
PIP_DEFAULT_TIMEOUT=100 \
# Poetry env vars (https://python-poetry.org/docs/configuration/#using-environment-variables)
POETRY_VERSION=1.1.12 \
POETRY_NO_INTERACTION=1 \
POETRY_VIRTUALENVS_CREATE=false
RUN pip install --no-cache-dir "poetry==$POETRY_VERSION"
RUN mkdir /app
WORKDIR /app
FROM poetry-base as base-deps
COPY poetry.lock pyproject.toml ./
RUN poetry install --no-dev
FROM base-deps as prod
COPY src/ /app/
ARG COMMIT_HASH
ENV COMMIT_HASH=$COMMIT_HASH
# CMD ["gunicorn", "profly.wsgi", "--bind", ":8080", "--worker-class", "gevent", "--worker-connections", "300", "--workers", "3"]
CMD ["bash", "-c", "python manage.py migrate && gunicorn profly.wsgi --bind :8080 --worker-class gevent --worker-connections 300 --workers 3"]
FROM prod as dev
RUN pip install virtualenv && poetry install
ENTRYPOINT ["python", "manage.py"]
CMD ["runserver", "0.0.0.0:8080"]
EXPOSE 8080