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 \ curl \ ca-certificates \ sudo \ git \ wget \ procps \ git-lfs \ zip \ unzip \ htop \ vim \ nano \ bzip2 \ libx11-6 \ build-essential \ libsndfile-dev \ software-properties-common \ xfce4 xfce4-goodies \ x11vnc \ novnc websockify \ supervisor \ xvfb \ && rm -rf /var/lib/apt/lists/* # Create directory for noVNC RUN mkdir -p /opt/novnc && \ ln -s /usr/share/novnc/* /opt/novnc/ # 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 # 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 \ && chmod -R 777 $HOME # 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 # 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 && \ chmod -R 755 /app # Final permission fixes RUN chmod -R 755 /ap && \ chown -R user:user /var/log/supervisor || true # Copy supervisor config COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf # 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 && \ /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"] # CMD ["/web-ui/start.sh"] # Start supervisor CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]