De Jenkins a Docker Hub en minutos.

Hello World 🙂
Mi experiencia con Jenkins ha sido limitada hasta hace poco, pero últimamente, por diversas circunstancias, he tenido que sumergirme en su uso. Aunque inicialmente enfrenté ciertos desafíos, he llegado a apreciar la potencia y versatilidad de esta herramienta, que se ha convertido en un pilar fundamental en el entorno laboral actual.
Es sorprendente cómo Jenkins puede simplificar y automatizar tareas repetitivas, convirtiéndose en una herramienta clave para el trabajo diario de muchos equipos tanto de Infra como de Desarrollo.
En esta entrada, me gustaría compartir contigo mi viaje de aprendizaje sobre Jenkins, específicamente enfocado en la creación de un servidor desde cero. Exploraremos juntos cómo configurar Jenkins y habilitar los plugins necesarios para construir un pipeline que ejecutará un Dockerfile. Además, aprenderemos a enviar la imagen creada hacia Docker Hub, la imagen va a contener una simple app desarrollada en PHP, todo de manera clara y paso a paso.
Espero que esta guía sea útil para aquellos que están dando sus primeros pasos con Jenkins o para aquellos que desean profundizar en su conocimiento.
¡Prepárate para descubrir el potencial de Jenkins!
Requisitos:
- Tener una cuenta en Docker Hub.
- Tener una cuenta en Github o cualquier otro sistema para alojar código.
1- Instalar Docker.
- sudo yum update && sudo yum -y install docker
- sudo service docker start && sudo systemctl enable docker && sudo systemctl status docker.service
2- Instalar Jenkins.
- sudo yum install -y java-11-amazon-corretto-devel git
- sudo su –
- wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
- java -jar jenkins.war &
Copiar el código para acceder a la UI de Jenkins:
Nota: Estamos instalando Jenkins en una instancia con SO Amazon Linux 2
3- Acceder a la UI de Jenkins.
En este paso vamos a acceder a la UI de Jenkins, poner el código que salvamos en le paso anterior y configurar las credenciales por primera vez.
4- Habilitar los pluggins necesarios
5- Ficheros para crear la imagen con la app.
- Dockerfile
-
# Usar una imagen de PHP con servidor web ApacheFROM php:apache# Copiar los archivos del código fuente al contenedorCOPY . /var/www/html/# Exponer el puerto 80EXPOSE 80# Iniciar el servidor Apache al ejecutar el contenedorCMD ["apache2-foreground"]
-
- index.html
-
<!DOCTYPE html><html lang="es"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Formulario de Impresión</title></head><body><h1>Formulario de Impresión</h1><form action="print.php" method="POST"><label for="nombre">Nombre:</label><input type="text" id="nombre" name="nombre" required><br><br><label for="apellidos">Apellidos:</label><input type="text" id="apellidos" name="apellidos" required><br><br><label for="fecha_nacimiento">Fecha de Nacimiento:</label><input type="date" id="fecha_nacimiento" name="fecha_nacimiento" required><br><br><button type="submit" name="imprimir">Imprimir</button></form></body></html>
-
- print.php
-
<?phpif(isset($_POST['imprimir'])) {$nombre = $_POST['nombre'];$apellidos = $_POST['apellidos'];$fecha_nacimiento = $_POST['fecha_nacimiento'];echo "<h2>Detalles</h2>";echo "Nombre: $nombre <br>";echo "Apellidos: $apellidos <br>";echo "Fecha de Nacimiento: $fecha_nacimiento <br>";}?>
-
Nota: Copiar todos los ficheros en la misma carpeta.
6- Crear credenciales en Jenkins para conectarnos a Docker Hub.
7- Generar pipeline de Jenkins.
- Siguiendo estos pasos crearás un pipeline que va a generar una imagen de Docker, tagguerla y enviarla hacia Docker Hub
- Nota: Todo el código que use en esta entrada lo puedes encontrar en mi GitHub
8- Acceder a la app creada.
Esta misma imagen la podemos probar en K8S, yo por ejemplo la probé en mi clúster local.
- kubectl run myapp –image=870730/myapp
Luego puedes acceder a ella ejecutado:
- kubectl port-forward pod/myapp 8080:80
ya con eso podemos acceder usando localhost:8080
Conclusiones
Como has podido observar, hemos logrado crear un breve flujo de trabajo utilizando GitHub, Jenkins y Docker Hub. Este ejercicio práctico es muy común y aplicable en escenarios reales. Espero que hayas disfrutado de este proceso tanto como yo, y estoy aquí para responder cualquier pregunta o recibir sugerencias que tengas. ¡No dudes en dejar tus comentarios!
¡Nos vemos en la próxima entrada!























