File size: 2,621 Bytes
1a92a53
67fb03c
 
1a92a53
67fb03c
 
 
 
 
 
1a92a53
 
 
3db3531
05fe167
3db3531
1a92a53
67fb03c
1a92a53
 
 
67fb03c
1a92a53
ba3b2d3
 
1a92a53
 
 
67fb03c
 
1a92a53
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67fb03c
1a92a53
 
 
 
 
 
 
 
 
67fb03c
 
1a92a53
67fb03c
 
1a92a53
 
 
67fb03c
1a92a53
67fb03c
 
1a92a53
 
 
 
 
76f239e
67fb03c
1a92a53
ca3a347
 
80fce4d
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
# Use NVIDIA CUDA base image (Ubuntu 22.04 jammy)
FROM nvidia/cuda:12.3.2-devel-ubuntu22.04

# ---------------- Base env ----------------
ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONUNBUFFERED=1
ENV CUDA_HOME=/usr/local/cuda
ENV PATH=${CUDA_HOME}/bin:/usr/local/bin:${PATH}
ENV LD_LIBRARY_PATH=${CUDA_HOME}/lib64:${LD_LIBRARY_PATH}

# Fix OpenMP threads to a valid integer (libgomp warning)
ENV OMP_NUM_THREADS=4

# Force headless: never try X11 DISPLAY
# ENV DISPLAY=""

# ---------------- System deps + Python 3.12 + headless GL ----------------
RUN apt-get update && apt-get install -y --no-install-recommends \
    software-properties-common \
    ca-certificates \
    curl wget git build-essential \
    libgl1-mesa-glx libglib2.0-0 libsm6 libxext6 libxrender1 \
    libgomp1 libgcc-s1 \
    libosmesa6 libosmesa6-dev \
    libegl1-mesa libegl1-mesa-dev \
 && add-apt-repository ppa:deadsnakes/ppa -y \
 && apt-get update && apt-get install -y --no-install-recommends \
    python3.12 python3.12-dev python3.12-venv \
 && rm -rf /var/lib/apt/lists/*

# Install pip for Python 3.12
RUN curl -sS https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py \
 && python3.12 /tmp/get-pip.py \
 && rm /tmp/get-pip.py

# Make 'python' and 'pip' point to Python 3.12
RUN ln -sf /usr/bin/python3.12 /usr/bin/python && \
    ln -sf /usr/local/bin/pip3.12 /usr/local/bin/pip

# ---------------- Writable app data & HF cache ----------------
ENV APP_DATA_DIR=/data
ENV HF_HOME=/data/hf_home
ENV HUGGINGFACE_HUB_CACHE=/data/hf_home
ENV TRANSFORMERS_CACHE=/data/hf_home
ENV MPLCONFIGDIR=/data/matplotlib

RUN mkdir -p /data/geometry /data/solution /data/weights /data/hf_home /data/matplotlib \
 && chmod -R 777 /data

# ---------------- Install frpc for Gradio share=True ----------------
RUN mkdir -p /data/hf_home/gradio/frpc && \
    wget https://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_linux_amd64 -O /data/hf_home/gradio/frpc/frpc_linux_amd64_v0.3 && \
    chmod +x /data/hf_home/gradio/frpc/frpc_linux_amd64_v0.3

# ---------------- Application setup ----------------
WORKDIR /app

# Copy requirements first (better caching)
COPY requirements.txt .

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

# Copy the rest of the source code
COPY . .

# Permissions
RUN chmod +x app.py
RUN chown -R 1000:1000 /app

# Expose Trame/Gradio port
EXPOSE 7860

# Run app (Trame or Gradio, same entrypoint)
# CMD ["python", "app.py"]
# Run app on 0.0.0.0 so HF proxy can reach it
CMD python app2.py --host 0.0.0.0 --port ${PORT:-7860} --server