38 lines
1.4 KiB
Docker
38 lines
1.4 KiB
Docker
# Этап 1: Используем официальный образ Python
|
||
FROM python:3.11-slim as base
|
||
|
||
# Устанавливаем переменные окружения
|
||
ENV PYTHONDONTWRITEBYTECODE 1
|
||
ENV PYTHONUNBUFFERED 1
|
||
ENV POETRY_NO_INTERACTION=1 \
|
||
POETRY_VIRTUALENVS_CREATE=false \
|
||
POETRY_CACHE_DIR='/var/cache/poetry'
|
||
|
||
# Устанавливаем Poetry
|
||
RUN pip install poetry
|
||
|
||
# Устанавливаем рабочую директорию
|
||
WORKDIR /app
|
||
|
||
|
||
# Этап 2: Установка зависимостей
|
||
FROM base as builder
|
||
|
||
# Копируем файлы, необходимые для установки зависимостей
|
||
COPY pyproject.toml poetry.lock ./
|
||
|
||
# Устанавливаем зависимости, не устанавливая сам проект
|
||
RUN poetry install --without dev --no-root
|
||
|
||
|
||
# Этап 3: Копирование кода и запуск
|
||
FROM base as final
|
||
|
||
# Копируем установленные зависимости и исполняемые файлы
|
||
COPY --from=builder /usr/local /usr/local
|
||
|
||
# Копируем ВЕСЬ ПРОЕКТ (включая папку app) в рабочую директорию
|
||
COPY . /app
|
||
|
||
# Указываем команду для запуска приложения при старте контейнера
|
||
CMD ["gunicorn", "-w", "4", "-k", "uvicorn.workers.UvicornWorker", "app.main:app", "-b", "0.0.0.0:8000"] |