File size: 2,752 Bytes
d7d2934
8a43ca9
d9afe4b
d7d2934
 
bdd065a
 
 
 
1727112
d9afe4b
cdfc8b3
 
1727112
 
cdfc8b3
1727112
 
 
 
cdfc8b3
1727112
cdfc8b3
 
 
1727112
 
 
 
cdfc8b3
c273690
 
 
bdd065a
 
cdfc8b3
d9afe4b
bdd065a
 
 
 
1727112
69210ea
049f904
d9afe4b
1b78bbc
299c065
d470fdb
 
b6b7b62
 
 
bdd065a
2915d40
bdd065a
a1af082
5acd02d
8e36933
5acd02d
 
3da3e4c
cdfc8b3
 
 
 
 
 
 
 
d470fdb
cdfc8b3
 
 
 
 
 
d9afe4b
 
 
2971656
d9afe4b
d208c05
d9afe4b
 
3da3e4c
1727112
78be0d3
1727112
d9afe4b
 
 
 
c273690
d470fdb
bdd065a
d470fdb
bdd065a
 
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
96
97
98
99
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 /web-ui
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 /web-ui/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

# 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"]