39 lines
963 B
Docker
39 lines
963 B
Docker
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"]
|