61 lines
2.1 KiB
Docker

FROM ubuntu:noble AS ollama-context-proxy
RUN apt-get update -y && \
apt-get install -y --no-install-recommends --fix-missing \
python3 \
python3-dev \
python3-pip \
python3-venv \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/{apt,dpkg,cache,log}
WORKDIR /opt/ollama-context-proxy
# Set default Ollama base URL
ENV OLLAMA_BASE_URL=http://ollama:11434
# Setup the docker pip shell
RUN { \
echo '#!/bin/bash' ; \
echo 'source /opt/ollama-context-proxy/venv/bin/activate' ; \
echo 'if [[ "${1}" != "" ]]; then bash -c "${@}"; else bash -i; fi' ; \
} > /opt/ollama-context-proxy/shell ; \
chmod +x /opt/ollama-context-proxy/shell
SHELL [ "/opt/ollama-context-proxy/shell" ]
RUN python3 -m venv --system-site-packages /opt/ollama-context-proxy/venv
COPY /requirements.txt /opt/ollama-context-proxy/
COPY /ollama-context-proxy.py /opt/ollama-context-proxy/ollama-context-proxy.py
RUN pip install -r requirements.txt
SHELL [ "/bin/bash", "-c" ]
RUN { \
echo '#!/bin/bash'; \
echo 'echo "Container: ollama-context-proxy"'; \
echo 'set -e'; \
echo 'echo "Setting pip environment to /opt/ollama-context-proxy"'; \
echo 'source /opt/ollama-context-proxy/venv/bin/activate'; \
echo 'if [[ "${1}" == "/bin/bash" ]] || [[ "${1}" =~ ^(/opt/ollama-context-proxy/)?shell$ ]]; then'; \
echo ' echo "Dropping to shell"'; \
echo ' shift'; \
echo ' if [[ "${1}" != "" ]]; then cmd="/opt/ollama-context-proxy/shell ${@}"; echo "Running: ${cmd}"; exec ${cmd}; else /opt/ollama-context-proxy/shell; fi'; \
echo 'else'; \
echo ' while true; do'; \
echo ' echo "Launching Ollama context proxy server..."'; \
echo ' exec python3 /opt/ollama-context-proxy/ollama-context-proxy.py'; \
echo ' if [[ $? -ne 0 ]]; then'; \
echo ' echo "Ollama context proxy server crashed, restarting in 3 seconds..."'; \
echo ' sleep 3'; \
echo ' fi'; \
echo ' done' ; \
echo 'fi'; \
} > /entrypoint.sh \
&& chmod +x /entrypoint.sh
ENV PATH=/opt/ollama-context-proxy:$PATH
ENTRYPOINT ["/entrypoint.sh"]