Interactive-JSAT / Dockerfile
SalHargis's picture
Update Dockerfile
fef6880 verified
# 1. Use Debian Bullseye (Stable Linux)
# This ensures Python and Tkinter match perfectly to prevent the 503 crash.
FROM debian:bullseye
# 2. Prevent interactive prompts
ENV DEBIAN_FRONTEND=noninteractive
# 3. Install Python, Tkinter, and GUI tools
RUN apt-get update && apt-get install -y \
python3 \
python3-pip \
python3-tk \
xvfb \
x11vnc \
fluxbox \
novnc \
net-tools \
scrot \
&& rm -rf /var/lib/apt/lists/*
# 4. Fix the 403 Error (Missing Index)
RUN ln -s /usr/share/novnc/vnc.html /usr/share/novnc/index.html
# 5. Set up work directory
WORKDIR /app
# 6. Copy files
COPY . .
# 7. Install Python requirements
# CORRECTION: Removed '--break-system-packages' which causes errors on Bullseye
RUN pip3 install --no-cache-dir -r requirements.txt
# 8. Create the user (ID 1000)
RUN useradd -m -u 1000 user
# 9. GENERATE STARTUP SCRIPT
RUN echo '#!/bin/bash' > start.sh && \
echo 'export DISPLAY=:1' >> start.sh && \
echo 'Xvfb :1 -screen 0 1440x960x24 &' >> start.sh && \
echo 'sleep 2' >> start.sh && \
echo 'fluxbox &' >> start.sh && \
echo 'python3 main.py &' >> start.sh && \
echo 'x11vnc -display :1 -nopw -forever -quiet &' >> start.sh && \
echo '/usr/share/novnc/utils/launch.sh --vnc localhost:5900 --listen 7860' >> start.sh && \
chmod +x start.sh
# 10. Fix permissions
RUN chown -R user:user /app
# 11. Switch to user and run
USER user
ENV HOME=/home/user \
PATH=/home/user/.local/bin:$PATH
CMD ["./start.sh"]