FROM python:3.13-slim

COPY --from=ghcr.io/astral-sh/uv:0.12 /uv /usr/local/bin/uv

WORKDIR /app
ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy

# Dependencies first, so code changes don't reinstall them.
COPY pyproject.toml uv.lock ./
RUN uv sync --locked --no-dev --no-install-project
COPY src ./src
RUN uv sync --locked --no-dev

RUN useradd --system --no-create-home app && mkdir /data && chown app /data
USER app

ENV PATH=/app/.venv/bin:$PATH \
    DB_PATH=/data/tag_albums.sqlite3
VOLUME /data
EXPOSE 8087
CMD ["tag-albums", "serve", "--port", "8087"]
