FROM python:3.12-slim # Force IPv4 and use German mirror with aggressive retry/timeout settings RUN echo "Acquire::ForceIPv4 \"true\";" > /etc/apt/apt.conf.d/99force-ipv4 && \ echo "Acquire::Retries \"5\";" > /etc/apt/apt.conf.d/80-retries && \ echo "Acquire::http::Timeout \"10\";" >> /etc/apt/apt.conf.d/80-retries && \ echo "Acquire::ftp::Timeout \"10\";" >> /etc/apt/apt.conf.d/80-retries && \ echo "deb http://ftp.de.debian.org/debian bookworm main" > /etc/apt/sources.list && \ echo "deb http://ftp.de.debian.org/debian bookworm-updates main" >> /etc/apt/sources.list # Install PostgreSQL client for psql (needed for startup.sh) RUN apt-get update && apt-get install -y postgresql-client && rm -rf /var/lib/apt/lists/* WORKDIR /app # Install Python dependencies COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # Copy application code COPY . . # Create directories RUN mkdir -p /app/data /app/photos # Make startup script executable RUN chmod +x /app/startup.sh # Use startup script instead of direct uvicorn CMD ["/app/startup.sh"]