88 lines
2.7 KiB
Docker
88 lines
2.7 KiB
Docker
FROM nvidia/cuda:11.8.0-devel-ubuntu22.04 as build
|
|
|
|
RUN apt-get update && \
|
|
apt-get install -y git python3-pip python3-venv wget unzip && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
RUN pip3 install --upgrade pip setuptools wheel
|
|
|
|
RUN git clone https://git.evulid.cc/cyberes/local-llm-server.git /local-llm-server
|
|
|
|
WORKDIR /local-llm-server
|
|
|
|
RUN python3 -m venv /venv
|
|
RUN /venv/bin/pip install git+https://github.com/vllm-project/vllm
|
|
|
|
RUN python3 -m venv /jupyterlab
|
|
RUN /jupyterlab/bin/pip install jupyterlab
|
|
RUN /jupyterlab/bin/jupyter labextension disable "@jupyterlab/apputils-extension:announcements"
|
|
|
|
RUN mkdir -p /app
|
|
RUN wget https://github.com/rapiz1/rathole/releases/download/v0.4.8/rathole-x86_64-unknown-linux-gnu.zip -O /tmp/rathole.zip
|
|
RUN unzip -j /tmp/rathole.zip -d /tmp
|
|
RUN rm /tmp/rathole.zip
|
|
RUN cp /tmp/rathole /app
|
|
|
|
# The local local-llm-server repo may be cached, so we will fetch and reset to the remote every time.
|
|
# Also, make sure there weren't any pip deps added.
|
|
ADD "https://www.random.org/cgi-bin/randbyte?nbytes=10&format=h" skipcache
|
|
RUN git fetch; git reset --hard origin/master
|
|
RUN /venv/bin/pip install -r requirements.txt
|
|
|
|
FROM nvidia/cuda:11.8.0-base-ubuntu22.04 as runtime
|
|
|
|
RUN apt-get update && apt-get install -y supervisor && rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN useradd -ms /bin/bash apiserver
|
|
RUN usermod -s /bin/bash root
|
|
|
|
RUN apt-get update && \
|
|
apt-get install -y python3 python3-pip wget aria2 git-lfs git openssh-server openssh-client nano tmux file && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN pip3 install --upgrade pip setuptools wheel
|
|
RUN pip3 install glances
|
|
|
|
# Enable root SSH login
|
|
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
|
|
|
|
# Disable password SSH login
|
|
RUN sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
|
|
|
|
# Create the necessary directory for SSH
|
|
RUN mkdir /var/run/sshd
|
|
|
|
ADD "https://www.random.org/cgi-bin/randbyte?nbytes=10&format=h" skipcache
|
|
|
|
COPY --from=build /local-llm-server /local-llm-server
|
|
COPY --from=build /venv /venv
|
|
COPY --from=build /app /app
|
|
COPY --from=build /jupyterlab /jupyterlab
|
|
|
|
RUN cp /local-llm-server/other/vllm/Docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
|
RUN cp /local-llm-server/other/vllm/Docker/start-vllm.sh /app/start-vllm.sh
|
|
RUN cp /local-llm-server/other/vllm/Docker/start-container.sh /app/start.sh
|
|
|
|
# Copy your secrets in
|
|
# COPY ./jupyter /app/jupyter
|
|
|
|
RUN mkdir -p /var/log/app/
|
|
|
|
RUN chown -R apiserver:apiserver /local-llm-server && \
|
|
chown -R apiserver:apiserver /app && \
|
|
chown -R apiserver:apiserver /var/log/app/
|
|
|
|
RUN chmod +x /app/start.sh
|
|
|
|
ENV SHELL="/bin/bash"
|
|
|
|
# SSH
|
|
EXPOSE 22
|
|
|
|
# VLLM
|
|
EXPOSE 7000
|
|
|
|
# Jupyter
|
|
EXPOSE 8888
|
|
|
|
CMD /app/start.sh
|