32 lines
1 KiB
Docker
32 lines
1 KiB
Docker
FROM python:3.13-slim
|
|
|
|
WORKDIR /app
|
|
|
|
# install pq (libpq5) - a driver for postgres
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
libpq5 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install uv for fast, reproducible installs
|
|
RUN pip install --no-cache-dir uv alembic procrastinate psycopg2-binary
|
|
|
|
# Install Python dependencies from pyproject.toml
|
|
COPY pyproject.toml .
|
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
|
uv pip install --no-cache-dir --system --requirements pyproject.toml
|
|
|
|
# Download spaCy language models
|
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
|
python -m spacy download en_core_web_sm && \
|
|
python -m spacy download fr_core_news_sm && \
|
|
python -m spacy download es_core_news_sm && \
|
|
python -m spacy download it_core_news_sm && \
|
|
python -m spacy download de_core_news_sm
|
|
|
|
# Copy application source and migrations
|
|
COPY app/ ./app/
|
|
COPY alembic/ ./alembic/
|
|
COPY alembic.ini .
|
|
|
|
EXPOSE 8000
|
|
CMD ["sh", "-c", "alembic upgrade head && uvicorn app.main:app --host 0.0.0.0 --port 8000"]
|