FROM node:16.14.2-slim AS frontend-builder
WORKDIR /app/frontend
COPY community_forms/frontend/package*.json ./
RUN npm ci
COPY community_forms/frontend/ ./
RUN npm run build

FROM python:3.14-slim

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        gcc \
        pkg-config \
        default-libmysqlclient-dev \
        gettext

WORKDIR /app

ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    UV_LINK_MODE=copy \
    UV_PYTHON_DOWNLOADS=never \
    UV_PROJECT_ENVIRONMENT=/app/.venv

COPY --from=ghcr.io/astral-sh/uv:0.9.10 /uv /uvx /bin/

COPY pyproject.toml uv.lock /_lock/

RUN cd /_lock && uv sync --locked --no-install-project

ADD . /app

COPY --from=frontend-builder /app/frontend/dist /app/community_forms/frontend/dist
COPY --from=frontend-builder /app/frontend/webpack-stats.json /app/community_forms/frontend/webpack-stats.json

RUN uv run python manage.py collectstatic -c --noinput \
    && uv run python manage.py compilemessages

EXPOSE 8013

CMD ["uv", "run", "gunicorn", "-c", "gunicorn_conf.py", "community_forms.wsgi:application"]
