# Entorno del curso de Programación Orientada a Objetos: Java 25 (LTS) + JUnit,
# y gcc para comparar con los ejemplos en C de las primeras semanas.
# Imagen nativa (amd64 o arm64): funciona igual en Linux, Windows (WSL2) y
# macOS, incluido Apple Silicon, sin emulación del contenedor.
FROM eclipse-temurin:25-jdk

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get install -y --no-install-recommends \
        make gcc libc6-dev git ca-certificates curl vim nano less tree man-db \
    && rm -rf /var/lib/apt/lists/*

# JUnit en un solo jar (el lanzador de consola trae JUnit Jupiter). Queda dentro
# de la imagen, así que las pruebas corren sin descargar nada en el laboratorio.
ARG JUNIT_VERSION=6.1.3
RUN mkdir -p /opt/junit && curl -fsSL -o /opt/junit/junit.jar \
        https://repo1.maven.org/maven2/org/junit/platform/junit-platform-console-standalone/${JUNIT_VERSION}/junit-platform-console-standalone-${JUNIT_VERSION}.jar
ENV JUNIT_JAR=/opt/junit/junit.jar

# En Linux y WSL2 los repositorios montados pertenecen a otro usuario; sin esto,
# git (que corre como root) los rechaza por "dubious ownership".
RUN git config --system --add safe.directory '*'

# jshell guarda preferencias aquí; sin el directorio creado, avisa en cada arranque.
RUN mkdir -p /root/.java/.userPrefs

WORKDIR /work
CMD ["bash"]
