web-ui / Dockerfile
binary1ne's picture
Update Dockerfile
bf86364 verified
FROM nvidia/cuda:12.5.1-cudnn-devel-ubuntu20.04
# Environment settings
ENV DEBIAN_FRONTEND=noninteractive \
TZ=Asia/Kolkata \
PYTHONUNBUFFERED=1 \
RESOLUTION=1280x720x24 \
VNC_PASSWORD=password
# Install required OS packages (minimal set)
RUN rm -f /etc/apt/sources.list.d/*.list && \
apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
sudo \
git git-lfs \
curl wget net-tools \
procps \
zip unzip \
htop \
vim nano \
bzip2 \
libx11-6 \
build-essential \
libsndfile-dev \
software-properties-common \
xfce4 xfce4-goodies \
x11vnc xvfb \
novnc websockify \
supervisor \
tigervnc-standalone-server \
tigervnc-common \
&& rm -rf /var/lib/apt/lists/*
# # Proper noVNC setup X11 and logs (fixed)
# RUN mkdir -p /opt/novnc && \
# ln -s /usr/share/novnc/* /opt/novnc/ && \
# ln -s /usr/share/novnc/utils /opt/novnc/utils &&\
# mkdir -p /var/log/x11vnc && \
# touch /var/log/x11vnc.log && \
# chmod 755 /var/log/x11vnc && \
# chmod 644 /var/log/x11vnc.log && \
# chmod -R 755 /opt/novnc && \
# chmod +x /opt/novnc/utils/*
# Proper noVNC setup X11 and logs (fixed)
RUN mkdir -p /opt/novnc && \
ln -s /usr/share/novnc/* /opt/novnc/ && \
ln -s /usr/share/novnc/utils /opt/novnc/utils && \
\
# Fix X11 socket dir
mkdir -p /tmp/.X11-unix && \
chmod 1777 /tmp/.X11-unix && \
\
# Fix logs for x11vnc
mkdir -p /var/log/x11vnc && \
touch /var/log/x11vnc.log && \
chmod 755 /var/log/x11vnc && \
chmod 644 /var/log/x11vnc.log && \
\
# Fix novnc perms
chmod -R 755 /opt/novnc && \
chmod +x /opt/novnc/utils/*
# Clone repository
RUN git clone https://github.com/browser-use/web-ui.git
WORKDIR /web-ui
RUN pwd && ls -la /web-ui
COPY webui_with_vnc.py start.sh /web-ui/
# Create supervisor directory first
RUN mkdir -p /etc/supervisor/conf.d
# Copy your custom supervisor config
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
# COPY /web-ui/src/utils/config.py /web-ui/src/utils/config_1.py
RUN ls -la /web-ui/src/utils/
COPY config.py /web-ui/src/utils/config.py
# Create a non-root user and switch to it
RUN adduser --disabled-password --gecos '' --shell /bin/bash user \
&& chown -R user:user /web-ui
RUN echo "user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/90-user
USER user
# All users can use /home/user as their home directory
ENV HOME=/home/user
RUN mkdir $HOME/.cache $HOME/.config $HOME/.vnc\
&& chmod -R 777 $HOME
RUN touch ~/.vnc/x11vnc.log
# Set up the Conda environment
ENV CONDA_AUTO_UPDATE_CONDA=false \
PATH=$HOME/miniconda/bin:$PATH
RUN curl -sLo ~/miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh \
&& chmod +x ~/miniconda.sh \
&& ~/miniconda.sh -b -p ~/miniconda \
&& rm ~/miniconda.sh \
&& conda clean -ya
# Create and activate Conda environment with Python 3.11
RUN conda create -y -n webui python=3.11 && \
echo "conda activate webui" >> ~/.bashrc
# Fix permissions for X11 and logs (fixed)
RUN chown user:user /var/log/x11vnc /var/log/x11vnc.log || true
# Set up supervisor and permissions
RUN mkdir -p /etc/supervisor/conf.d && \
mkdir -p /var/log/supervisor && \
mkdir -p /home/user/.vnc && \
chown -R user:user /home/user
# Final permission fixes
RUN chmod -R 755 /web-ui && \
chown -R user:user /var/log/supervisor || true
# Install dependencies into Conda env
RUN /home/user/miniconda/envs/webui/bin/pip install --no-cache-dir --upgrade pip uv==0.4.17 playwright gradio python-dotenv && \
/home/user/miniconda/envs/webui/bin/pip install --no-cache-dir -r requirements.txt && \
/home/user/miniconda/envs/webui/bin/playwright install --with-deps chromium
# Expose application port
EXPOSE 7860
# Fix ownership and permissions
RUN chown -R user:user /web-ui && chmod -R 755 /web-ui
# Use Conda environment Python explicitly
# CMD ["/home/user/miniconda/envs/webui/bin/python", "webui.py", "--ip", "0.0.0.0", "--port", "7860"]
# Start supervisor
# CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
CMD ["/web-ui/start.sh"]