FROM python:3.12-slim ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 \ DEBIAN_FRONTEND=noninteractive WORKDIR /app # System deps: exiftool + sshd + bash (sqlite CLI not required for Python sqlite3) RUN apt-get update \ && apt-get install -y --no-install-recommends \ libimage-exiftool-perl \ openssh-server \ bash \ && rm -rf /var/lib/apt/lists/* # Unprivileged user for the app / SSH RUN useradd -m -d /home/ctfuser -s /bin/bash ctfuser # SSH minimal setup RUN mkdir -p /run/sshd && chmod 755 /run/sshd && ssh-keygen -A COPY chall/requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY /chall /app RUN chmod +x /app/entrypoint.sh && mkdir -p /app/uploads && chmod 755 /app/uploads RUN mkdir -p /data /app/uploads /run/sshd \ && chown -R ctfuser:ctfuser /app /app/uploads /data \ && chmod 755 /app EXPOSE 8000 EXPOSE 22 ENTRYPOINT ["/bin/bash", "/app/entrypoint.sh"]