File size: 2,023 Bytes
644bdfe
 
22f28c2
644bdfe
9c1e1f6
 
 
22f28c2
644bdfe
9c1e1f6
 
ab0f837
9c1e1f6
bedc715
22f28c2
 
644bdfe
4bae965
 
74cc69f
a089a6b
9c1e1f6
6b673ac
bedc715
a089a6b
 
 
22f28c2
 
 
bedc715
d45babc
 
 
22f28c2
9123b55
 
bedc715
9c1e1f6
 
 
 
644bdfe
9b88aa8
a1be2d1
78a34c3
372d551
78a34c3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
FROM python:3.10-slim

# ── Base OS packages ───────────────────────────────────────────────
RUN apt-get update && apt-get install -y --no-install-recommends \
    gcc python3-dev openssl curl ca-certificates gnupg build-essential \
    && rm -rf /var/lib/apt/lists/*

# ── MariaDB client libs ────────────────────────────────────────────
RUN curl -LsSO https://r.mariadb.com/downloads/mariadb_repo_setup && \
    chmod +x mariadb_repo_setup && ./mariadb_repo_setup --mariadb-server-version="mariadb-11.7" && \
    apt-get update && apt-get install -y --no-install-recommends \
    mariadb-server mariadb-client libmariadb3 libmariadb-dev && \
    apt-get clean && rm -rf /var/lib/apt/lists/*

# ── Python tooling ────────────────────────────────────────────────
RUN pip install --no-cache-dir uv==0.1.37

RUN useradd -m -u 1000 user

WORKDIR /app
# Copy project files
COPY . /app
RUN chmod +x /app/entrypoint.sh

# Ensure our src/ is on the Python path so our local code is used
ENV PYTHONPATH=/app/src

# Install project (editable) + FastAPI stack in one layer
RUN uv pip install -e . --system && \
    uv pip install fastapi uvicorn[standard] --system

# Fix permissions so the unprivileged user can write to /app and .egg-info
RUN chown -R user:user /app

# ── Unprivileged user ─────────────────────────────────────────────
USER user

ENV HOME=/home/user \
    PATH=/home/user/.local/bin:$PATH \
    UV_NO_CACHE=1 \
    UV_CACHE_DIR=/dev/null \
    PORT=7860

EXPOSE 7860

# Run the server using uvicorn with app.py as the entrypoint
ENTRYPOINT ["/app/entrypoint.sh"]
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]