Automatización de despliegue con Jenkins y Docker

Este tutorial explica cómo configurar un entorno de integración continua utilizando Jenkins dentro de un contenedor Docker para automatizar el despliegue de aplicaciones Java. Se detallan los pasos desde la instalación del entorno hasta la ejecución del proyecto final.

Instalación de Docker

Para comenzar, se debe enstalar Docker Community Edition en el sistema operativo CentOS:

yum update
yum remove docker docker-common docker-selinux docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce
systemctl start docker
systemctl enable docker
docker version

Configuración de Jenkins

Jenkins se ejecutará como un contenedor Docker. El siguiente comando crea y ejecuta una instancia de Jenkins:

docker run --name ci-server -u root --rm -d -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean

Tras la ejecución, acceder a http://{ip-del-servidor}:8080 para completar la confiugración inicial. Es necesario obtener la contraseña administrativa desde el archivo:

docker exec -it ci-server bash
cat /var/lib/jenkins/secrets/initialAdminPassword

Personalización del entorno Jenkins

Desde el panel de administración, se deben instalar plugins adicionales:

  • Maven Integration
  • Publish Over SSH (opcional)
  • Gitee (si se utiliza este servicio)

Además, se debe configurar Maven en la sección de configuración global.

Creación del pipeline

Crear un nuevo proyecto de tipo "free style". En la configuración:

  • Especificar la ubicación del reopsitorio Git
  • Agregar credenciales si es necesario
  • Definir el paso de construcción usando Maven:
clean install -Dmaven.test.skip=true

Verificación del proceso

Ejecutar manualmente el job creado y revisar los logs de salida para confirmar que el artefacto .jar se genera correctamente. Los archivos resultantes estarán disponibles en:

/var/jenkins_home/workspace/{nombre-del-proyecto}

Despliegue automático

Para ejecutar la aplicación, se crea un Dockerfile en la raíz del proyecto Spring Boot:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY target/*.jar application.jar
EXPOSE 8888
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/application.jar","--spring.profiles.active=prd"]

Luego, se modifica la configuración del job en Jenkins añadiendo un script de shell:

cd $WORKSPACE
docker stop my-app-container || true
docker rm my-app-container || true
docker rmi my-app-image || true
docker build -t my-app-image .
docker run -d -p 8888:8888 --name my-app-container my-app-image

Este script asegura que las versiones anteriores se eliminen antes de construir e iniciar la nueva imagen. Finalmente, se puede verificar el estado del contenedor con:

docker ps
docker logs my-app-container

Etiquetas: Jenkins Docker CI/CD Spring Boot maven

Publicado el 8-20 05:40