# Use an official Golang runtime as a parent image FROM golang:1.21 # Install necessary dependencies RUN apt-get update && apt-get install -y \ wget \ git \ curl \ zip \ python3 \ python3-venv \ && rm -rf /var/lib/apt/lists/* # Install Katana RUN go install github.com/projectdiscovery/katana/cmd/katana@latest # Set the GOPATH and add Katana to PATH ENV GOPATH=/go ENV PATH=$GOPATH/bin:/usr/local/go/bin:$PATH # Set MPLCONFIGDIR to a writable directory ENV MPLCONFIGDIR=/tmp/.matplotlib # Create a writable directory for Katana's config RUN mkdir -p /tmp/katana # Set the environment variable for Katana's config directory ENV KATANA_CONFIG=/tmp/katana # Create a non-root user RUN useradd -m myuser # Change ownership of the /tmp/katana directory to myuser RUN chown -R myuser:myuser /tmp/katana # Set appropriate permissions RUN chmod 755 /tmp/katana # Create and activate a virtual environment for Python RUN python3 -m venv /app/venv ENV PATH="/app/venv/bin:$PATH" # Copy requirements file COPY requirements.txt /app/requirements.txt # Install Python dependencies in the virtual environment RUN pip install --upgrade pip \ && pip install -r /app/requirements.txt # Copy the Gradio app code to the container COPY app.py /app/app.py # Set the working directory WORKDIR /app # Switch to the non-root user USER myuser # Expose the port Gradio will run on EXPOSE 7860 # Command to run the Gradio app CMD ["python", "app.py"]