Spaces:
Running
Running
# Use an official Python runtime as a parent image | |
FROM python:3.10-slim | |
# Install git as root | |
RUN apt-get update && \ | |
apt-get install -y wget gnupg nmap && \ | |
# Add the LLVM repository for clang | |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - && \ | |
echo "deb http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-15 main" > /etc/apt/sources.list.d/llvm-toolchain.list && \ | |
apt-get update && \ | |
apt-get install -y git cmake clang && \ | |
rm -rf /var/lib/apt/lists/* | |
# Create a non-root user (do this as root) | |
RUN useradd -ms /bin/bash user | |
# Set the working directory as root before switching users | |
WORKDIR /home/user/app | |
# Copy files and change permissions as root | |
COPY requirements.txt /home/user/app/requirements.txt | |
COPY setup.sh /home/user/app/setup.sh | |
RUN chmod +x /home/user/app/setup.sh | |
# Install Python dependencies as root | |
RUN pip install --no-cache-dir -r /home/user/app/requirements.txt | |
# Run setup.sh as root (if it needs elevated privileges) | |
RUN /home/user/app/setup.sh | |
# Change ownership of the directory to user | |
RUN chown -R user:user /home/user/app | |
# Switch to the non-root user | |
USER user | |
RUN ls /home/user/app | |
# Copy the rest of the application code to the container (as user) | |
COPY . /home/user/app | |
# Expose the necessary port | |
EXPOSE 7860 | |
# Set environment variable for Gradio | |
ENV GRADIO_SERVER_NAME="0.0.0.0" | |
# Command to run the application | |
CMD ["python", "app.py"] | |