File size: 2,662 Bytes
dd0f64a
 
b2031a9
 
dd0f64a
f9c817e
dd0f64a
cf57e4e
b2031a9
 
 
 
 
 
 
f9c817e
dd0f64a
 
 
 
b2031a9
 
dd0f64a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f9c817e
 
b2031a9
dd0f64a
 
f9c817e
 
 
 
 
 
b2031a9
dd0f64a
 
f9c817e
 
b2031a9
f9c817e
 
 
 
b2031a9
 
f9c817e
b2031a9
 
 
dd0f64a
 
 
f9c817e
cf57e4e
f9c817e
b2031a9
dd0f64a
 
 
 
 
 
 
f9c817e
 
b2031a9
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# ╔══════════════════════════════════════════════════════════════╗
# β•‘  Dockerfile β€” Cloudflare AI API                              β•‘
# β•‘  Stack: Python 3.11 Β· FastAPI Β· Chrome Β· Xvfb               β•‘
# β•‘  Port: 7860                                                  β•‘
# β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

FROM python:3.11-slim

ENV DEBIAN_FRONTEND=noninteractive \
    PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1

SHELL ["/bin/bash", "-o", "pipefail", "-c"]

# System deps
RUN apt-get update && apt-get install -y --no-install-recommends \
        xvfb \
        x11-utils \
        wget \
        ca-certificates \
        gnupg \
        curl \
        libx11-6 \
        libx11-xcb1 \
        libxcb1 \
        libxcomposite1 \
        libxcursor1 \
        libxdamage1 \
        libxext6 \
        libxfixes3 \
        libxi6 \
        libxrandr2 \
        libxrender1 \
        libxss1 \
        libxtst6 \
        libglib2.0-0 \
        libgtk-3-0 \
        libnspr4 \
        libnss3 \
        libatk1.0-0 \
        libatk-bridge2.0-0 \
        libdrm2 \
        libgbm1 \
        libcups2 \
        libasound2 \
        libpango-1.0-0 \
        libpangocairo-1.0-0 \
        fonts-liberation \
        xdg-utils \
        lsb-release \
        procps \
    && rm -rf /var/lib/apt/lists/*

# Google Chrome stable
RUN wget -q -O /tmp/chrome.deb \
        https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \
    && apt-get update \
    && apt-get install -y --no-install-recommends /tmp/chrome.deb \
    && rm -f /tmp/chrome.deb \
    && rm -rf /var/lib/apt/lists/* \
    && google-chrome --version

# Pre-create X11 socket directory
RUN mkdir -p /tmp/.X11-unix && chmod 1777 /tmp/.X11-unix

WORKDIR /app

# Python deps
COPY requirements.txt .
RUN pip install --no-cache-dir --upgrade pip \
    && pip install --no-cache-dir -r requirements.txt

# App source
COPY cloudflare_provider.py server.py entrypoint.sh ./

# User + permissions
RUN useradd -m -u 1000 appuser \
    && mkdir -p /app/cache \
    && chown -R appuser:appuser /app \
    && chmod +x /app/entrypoint.sh \
    && chmod 1777 /tmp/.X11-unix

USER appuser

ENV DISPLAY=:99 \
    XVFB_EXTERNAL=1 \
    POOL_SIZE=2 \
    PORT=7860 \
    HOST=0.0.0.0 \
    HEALTH_INTERVAL=60 \
    DEFAULT_MODEL=@cf/moonshotai/kimi-k2.5

EXPOSE 7860

CMD ["/app/entrypoint.sh"]