# Use an official Python runtime as a parent image FROM python:3.9-slim # Set the working directory to /app WORKDIR /app # make directory /app/files/ RUN mkdir /app/files/ RUN mkdir /app/ckpt/ # grant permission to write to /app/files/ RUN chmod 777 /app/files/ RUN chmod 777 /app/ckpt/ # Copy the requirements file into the container COPY requirements.txt . COPY serve_grobid.sh . # JAVA RUN apt-get update && \ apt-get install -y openjdk-11-jre-headless && \ apt-get clean; ENV JAVA_HOME /usr/lib/jvm/java-11-openjdk-amd64/ ENV PATH $JAVA_HOME/bin:$PATH # Install any needed packages specified in requirements.txt RUN pip install --no-cache-dir -r requirements.txt # Copy the current directory contents into the container at /app COPY . /app # Expose port 7860 for the streamlit app to listen on EXPOSE 7860 EXPOSE 5000 # open the grobid server RUN apt-get update && \ apt-get install -y wget unzip RUN chmod +x serve_grobid.sh RUN ./serve_grobid.sh # open the backend server RUN python backend.py # Run the command to start the streamlit app CMD ["streamlit", "run", "frontend.py", "--server.address", "0.0.0.0", "--server.port", "7860", "--server.enableCORS", "true", "--server.enableXsrfProtection", "false"]