mirror of
https://github.com/khoaliber/khoj.git
synced 2026-03-02 13:18:18 +00:00
Use UV to manage python version, env on khoj computer
- Use khoj username on khoj's computer - Uv is much faster for builds
This commit is contained in:
@@ -72,39 +72,31 @@ RUN apt update \
|
|||||||
&& apt remove -y light-locker xfce4-screensaver xfce4-power-manager || true
|
&& apt remove -y light-locker xfce4-screensaver xfce4-power-manager || true
|
||||||
|
|
||||||
# Create Computer User
|
# Create Computer User
|
||||||
ENV USERNAME=operator
|
ENV USERNAME=khoj
|
||||||
ENV HOME=/home/$USERNAME
|
ENV HOME=/home/$USERNAME
|
||||||
RUN useradd -m -s /bin/bash -d $HOME -g $USERNAME $USERNAME && echo "${USERNAME} ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
RUN groupadd $USERNAME && \
|
||||||
|
useradd -m -s /bin/bash -d $HOME -g $USERNAME $USERNAME && \
|
||||||
|
echo "${USERNAME} ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
||||||
USER $USERNAME
|
USER $USERNAME
|
||||||
WORKDIR $HOME
|
WORKDIR $HOME
|
||||||
|
|
||||||
# Setup Python
|
# Install Python using uv and create a virtual environment
|
||||||
RUN git clone https://github.com/pyenv/pyenv.git ~/.pyenv && \
|
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
|
||||||
cd ~/.pyenv && src/configure && make -C src && cd .. && \
|
ENV PYTHON_VERSION=3.11.6
|
||||||
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc && \
|
RUN uv python pin $PYTHON_VERSION
|
||||||
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc && \
|
RUN uv venv $HOME/.venv --python $PYTHON_VERSION --seed
|
||||||
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
|
RUN echo 'export PATH="$HOME/.venv/bin:$PATH"' >> "$HOME/.bashrc"
|
||||||
ENV PYENV_ROOT="$HOME/.pyenv"
|
ENV PATH="$HOME/.venv/bin:$PATH"
|
||||||
ENV PATH="$PYENV_ROOT/bin:$PATH"
|
|
||||||
ENV PYENV_VERSION_MAJOR=3
|
|
||||||
ENV PYENV_VERSION_MINOR=11
|
|
||||||
ENV PYENV_VERSION_PATCH=6
|
|
||||||
ENV PYENV_VERSION=$PYENV_VERSION_MAJOR.$PYENV_VERSION_MINOR.$PYENV_VERSION_PATCH
|
|
||||||
RUN eval "$(pyenv init -)" && \
|
|
||||||
pyenv install $PYENV_VERSION && \
|
|
||||||
pyenv global $PYENV_VERSION && \
|
|
||||||
pyenv rehash
|
|
||||||
ENV PATH="$HOME/.pyenv/shims:$HOME/.pyenv/bin:$PATH"
|
|
||||||
|
|
||||||
# Install Python Packages
|
# Install Python Packages
|
||||||
RUN python3 -m pip install --no-cache-dir \
|
RUN uv pip install --no-cache-dir \
|
||||||
pyautogui \
|
pyautogui \
|
||||||
Pillow \
|
Pillow \
|
||||||
pyperclip \
|
pyperclip \
|
||||||
pygetwindow
|
pygetwindow
|
||||||
|
|
||||||
# Setup VNC
|
# Setup VNC
|
||||||
RUN x11vnc -storepasswd secret /home/operator/.vncpass
|
RUN x11vnc -storepasswd secret /home/khoj/.vncpass
|
||||||
|
|
||||||
ARG WIDTH=1024
|
ARG WIDTH=1024
|
||||||
ARG HEIGHT=768
|
ARG HEIGHT=768
|
||||||
@@ -115,13 +107,22 @@ ENV DISPLAY_NUM=$DISPLAY_NUM
|
|||||||
ENV DISPLAY=":$DISPLAY_NUM"
|
ENV DISPLAY=":$DISPLAY_NUM"
|
||||||
|
|
||||||
# Expose VNC on port 5900
|
# Expose VNC on port 5900
|
||||||
# run Xvfb, x11vnc, Xfce (no login manager)
|
|
||||||
EXPOSE 5900
|
EXPOSE 5900
|
||||||
CMD ["/bin/sh", "-c", " export XDG_RUNTIME_DIR=/run/user/$(id -u); \
|
|
||||||
mkdir -p $XDG_RUNTIME_DIR && chown $USERNAME:$USERNAME $XDG_RUNTIME_DIR && chmod 0700 $XDG_RUNTIME_DIR; \
|
# Start Virtual Display (Xvfb), Desktop Manager (XFCE) and Remote Viewer (X11 VNC)
|
||||||
|
CMD ["/bin/sh", "-c", " \
|
||||||
|
# Create and permission XDG_RUNTIME_DIR with sudo \n\
|
||||||
|
export XDG_RUNTIME_DIR=/run/user/$(id -u); \
|
||||||
|
sudo mkdir -p $XDG_RUNTIME_DIR && \
|
||||||
|
sudo chown $(id -u):$(id -g) $XDG_RUNTIME_DIR && \
|
||||||
|
sudo chmod 0700 $XDG_RUNTIME_DIR; \
|
||||||
|
\
|
||||||
|
# Start Virtual Display \n\
|
||||||
Xvfb $DISPLAY -screen 0 ${WIDTH}x${HEIGHT}x24 -dpi 96 -auth /home/$USERNAME/.Xauthority >/dev/null 2>&1 & \
|
Xvfb $DISPLAY -screen 0 ${WIDTH}x${HEIGHT}x24 -dpi 96 -auth /home/$USERNAME/.Xauthority >/dev/null 2>&1 & \
|
||||||
sleep 1; \
|
sleep 1; \
|
||||||
xauth add $DISPLAY . $(mcookie); \
|
xauth add $DISPLAY . $(mcookie); \
|
||||||
|
\
|
||||||
|
# Start VNC Server \n\
|
||||||
x11vnc -display $DISPLAY -forever -rfbauth /home/$USERNAME/.vncpass -listen 0.0.0.0 -rfbport 5900 >/dev/null 2>&1 & \
|
x11vnc -display $DISPLAY -forever -rfbauth /home/$USERNAME/.vncpass -listen 0.0.0.0 -rfbport 5900 >/dev/null 2>&1 & \
|
||||||
eval $(dbus-launch --sh-syntax) && \
|
eval $(dbus-launch --sh-syntax) && \
|
||||||
startxfce4 & \
|
startxfce4 & \
|
||||||
|
|||||||
Reference in New Issue
Block a user