# Use the official lightweight Python image. | |
# https://hub.docker.com/_/python | |
FROM python:3.9-slim | |
# Ensure Python outputs everything immediately (useful for real-time logging in Docker). | |
ENV PYTHONUNBUFFERED 1 | |
# Set the working directory in the container. | |
WORKDIR /app | |
# Update the system packages and install system-level dependencies required for compilation. | |
# gcc: Compiler required for some Python packages. | |
# build-essential: Contains necessary tools and libraries for building software. | |
RUN apt-get update && apt-get install -y --no-install-recommends \ | |
gcc \ | |
build-essential \ | |
&& rm -rf /var/lib/apt/lists/* | |
# Copy the project's requirements file into the container. | |
COPY requirements.txt /app/ | |
# Upgrade pip for the latest features and install the project's Python dependencies. | |
RUN pip install --upgrade pip && pip install -r requirements.txt | |
# Copy the entire project into the container. | |
# This may include all code, assets, and configuration files required to run the application. | |
COPY . /app/ | |
# Install additional requirements specific to the interference module/package. | |
RUN pip install -r interference/requirements.txt | |
# Expose port 1337 | |
EXPOSE 1337 | |
# Define the default command to run the app using Python's module mode. | |
CMD ["python", "-m", "interference.app"] | |