Dubs / Dockerfile
abanm's picture
Update Dockerfile
2e30346 verified
raw
history blame
2.72 kB
# ----------------------------------------------------------
# 1. Base Image
# ----------------------------------------------------------
FROM ubuntu:22.04
# Avoid interactive prompts during build
ENV DEBIAN_FRONTEND=noninteractive
# ----------------------------------------------------------
# 2. Install System Dependencies
# ----------------------------------------------------------
RUN apt-get update && apt-get install -y --no-install-recommends \
wget \
curl \
ca-certificates \
git \
build-essential \
python3 \
python3-pip \
&& rm -rf /var/lib/apt/lists/*
# ----------------------------------------------------------
# 3. Install Ollama as Root
# ----------------------------------------------------------
# Set OLLAMA_HOME to a writable directory
ENV OLLAMA_HOME=/ollama-data
RUN mkdir -p $OLLAMA_HOME && chmod 755 $OLLAMA_HOME
RUN curl -fsSL https://ollama.com/install.sh | bash
# ----------------------------------------------------------
# 4. Create a Non-Root User
# ----------------------------------------------------------
RUN useradd -m appuser
# ----------------------------------------------------------
# 5. Set Permissions for Ollama Directory
# ----------------------------------------------------------
RUN chown -R appuser:appuser $OLLAMA_HOME
# ----------------------------------------------------------
# 6. Set Working Directory for the Application
# ----------------------------------------------------------
WORKDIR /app
# ----------------------------------------------------------
# 7. Copy and Install Python Requirements
# ----------------------------------------------------------
COPY requirements.txt .
RUN pip3 install --no-cache-dir -r requirements.txt
# ----------------------------------------------------------
# 8. Copy Application Files
# ----------------------------------------------------------
COPY app.py /app/app.py
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
# ----------------------------------------------------------
# 9. Set Environment Variables and Expose Port
# ----------------------------------------------------------
ENV API_KEY=${API_KEY}
EXPOSE 7860
# ----------------------------------------------------------
# 10. Adjust Ownership of Application Directory
# ----------------------------------------------------------
RUN chown -R appuser:appuser /app
# ----------------------------------------------------------
# 11. Switch to Non-Root User
# ----------------------------------------------------------
USER appuser
# ----------------------------------------------------------
# 12. Define Entrypoint
# ----------------------------------------------------------
CMD ["/entrypoint.sh"]