Foocus / Dockerfile
SoulofSukuna's picture
Update Dockerfile
bb3b29c verified
# Use an official Python base image (Python 3.10.12-slim)
FROM python:3.10.12-slim
# Prevent interactive prompts during package installation
ENV DEBIAN_FRONTEND=noninteractive
# Suppress TensorFlow warnings
ENV TF_CPP_MIN_LOG_LEVEL=2
# Set environment variables for Matplotlib, Hugging Face Transformers, and Pip cache
ENV MPLCONFIGDIR=/app/.config/matplotlib
ENV HF_HOME=/app/.cache/huggingface/hub
ENV PIP_CACHE_DIR=/app/.cache/pip
ENV HOME=/home/appuser
# Create necessary directories for caches and configs
RUN mkdir -p $MPLCONFIGDIR \
&& mkdir -p $HF_HOME \
&& mkdir -p $PIP_CACHE_DIR
# Set the working directory to /app
WORKDIR /app
# Install system dependencies required for OpenCV and other packages
RUN apt-get update && apt-get install -y --no-install-recommends \
git \
build-essential \
libglib2.0-0 \
libsm6 \
libxext6 \
libxrender-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN pip install --no-cache-dir torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
# Upgrade pip to the latest version
RUN pip install --no-cache-dir -U pip tensorflow-cpu
# Clone the Fooocus repository
RUN git clone https://github.com/lllyasviel/Fooocus.git /app/Fooocus
# Set the working directory to the Fooocus folder
WORKDIR /app/Fooocus
# Install the required Python packages listed in requirements_versions.txt
RUN pip install --no-cache-dir -U -r requirements_versions.txt
# Copy the local application files into the container
COPY . .
# Create a non-root user and group with UID and GID 1000
RUN groupadd -g 1000 appgroup && \
useradd -m -u 1000 -g appgroup appuser
# Change ownership of the /app directory to the non-root user
RUN chown -R appuser:appgroup /app
# Switch to the non-root user
USER appuser
# Expose the necessary port
EXPOSE 7860
# Set environment variables for the non-root user
ENV HOME=/home/appuser
ENV PATH=$HOME/.local/bin:$PATH
# Command to run the Python script
CMD ["python", "entry_with_update.py", "--share", "--always-cpu"]