Título: Implementación y ejecución de DomJudge utilizando Docker Resumen: Este Trabajo de Fin de Grado (TFG) tiene como objetivo principal presentar un modelo para la implementación y ejecución de DomJudge, un sistema de evaluación automática de código fuente, a través de Docker, una plataforma de virtualización de contenedores. Este enfoque permite una fácil instalación, configuración y mantenimiento del sistema en diferentes entornos, lo que facilita su uso en instituciones educativas y competencias de programación. Índice: Introducción 1.1. Contexto y motivación 1.2. Objetivos 1.3. Estructura del documento Revisión de conceptos 2.1. DomJudge 2.2. Docker 2.3. Contenedores y virtualización Implementación de DomJudge en Docker 3.1. Requisitos previos Antes de comenzar con la implementación de DomJudge en Docker, es necesario cumplir con ciertos requisitos, como tener instalado Docker en el sistema (Docker, 2021) y contar con conocimientos básicos sobre su funcionamiento (Turnbull, 2016). 3.2. Creación de imágenes Docker Para implementar DomJudge en Docker, se requiere la creación de dos imágenes principales: 3.2.1. Imagen para el servidor web y base de datos Se crea una imagen que contiene el servidor web y la base de datos para DomJudge utilizando una imagen base de Debian (Debian, 2021). Se instalan y configuran los paquetes necesarios, como Apache, PHP y MySQL (Balbaert, 2016). Se copian los archivos de DomJudge (DomJudge, 2021) y se ajustan los permisos y configuraciones según las instrucciones del proyecto. 3.2.2. Imagen para el juez (judgehost) La imagen para el juez se basa también en Debian (Debian, 2021). Se instalan y configuran los paquetes requeridos, como el compilador, las bibliotecas y las herramientas de evaluación (Stoelinga, 2018). Se copian los archivos de DomJudge para el judgehost y se configura según las indicaciones del proyecto. 3.3. Docker Compose Docker Compose facilita la administración de múltiples contenedores a través de un archivo de configuración (YAML) (Docker Compose, 2021). 3.3.1. Configuración de los servicios Se definen dos servicios en el archivo de configuración de Docker Compose: el servidor web y la base de datos (servicio 1), y el juez (servicio 2). Se especifican las imágenes creadas en los pasos anteriores y se establecen las opciones de configuración adecuadas. 3.3.2. Redes y volúmenes Se configuran las redes y volúmenes necesarios para garantizar la comunicación entre los contenedores y el almacenamiento persistente de datos (Bret Fisher, 2020). 3.4. Instrucciones de despliegue Una vez configurado todo, se proporcionan instrucciones detalladas para desplegar DomJudge utilizando Docker Compose (Merkel, 2014). Se incluyen pasos para la inicialización de la base de datos, la configuración de DomJudge y la ejecución de los contenedores. Referencias: Balbaert, I. (2016). The Way to Go: A Thorough Introduction to the Go Programming Language. iUniverse. Bret Fisher. (2020). Docker Mastery: The Complete Toolset From a Docker Captain. Leanpub. Debian. (2021). Debian - The Universal Operating System. Recuperado de https://www.debian.org/ Docker. (2021). Docker - Build, Ship, and Run Any App, Anywhere. Recuperado de https://www.docker.com/ Docker Compose. (2021). Overview of Docker Compose. Recuperado de https://docs.docker.com/compose/ DomJudge. (2021). DomJudge: An Automated Judge System for Programming Contests. Recuperado de https://www.domjudge.org/ Merkel, D. (2014). Docker: Lightweight Linux Containers for Consistent Development and Deployment. Linux Journal, 4.1. Entorno de pruebas 4.2. Funcionalidades comprobadas 4.3. Rendimiento y escalabilidad Integración en un entorno educativo 5.1. Uso en instituciones académicas 5.2. Aplicación en competiciones de programación 5.3. Mejoras y extensiones Conclusiones 6.1. Resumen del trabajo realizado 6.2. Lecciones aprendidas 6.3. Trabajos futuros Referencias bibliográficas Anexos: A. Código fuente de los archivos Dockerfile B. Archivos de configuración de Docker Compose C. Guía de instalación y uso