f1tness_parser/backend/Dockerfile

37 lines
992 B
Docker

# Two images from one file:
# docker build --target prod . - runtime only: no pytest/mypy, no tests, no personal notes
# docker build --target dev . - prod + dev tools, tests and notes (docker compose uses it)
FROM python:3.13-slim AS base
WORKDIR /app
ENV PYTHONPATH=/app
# Copy requirements first for better caching
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY alembic.ini ./
COPY ./app ./app
COPY ./migrations ./migrations
EXPOSE 8000
FROM base AS prod
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
# The last stage is the default target. The project is developed only in Docker, so the dev
# tools (pytest, mypy) live in this image.
FROM base AS dev
COPY requirements-dev.txt pyproject.toml ./
RUN pip install --no-cache-dir -r requirements-dev.txt
COPY ./data ./data
COPY ./tests ./tests
# Command will be overridden by docker-compose
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]