Instalación de Jenkins usando docker compose - nrubio02/engineering-demo GitHub Wiki

Basado en el docker-compose.yml del siguiente artículo: https://medium.com/@Joachim8675309/jenkins-environment-using-docker-6a12603ebf9

Para la instalación de Jenkins, seguiremos pasos muy similares a la instalación de GitLab, la cual recomiendo leer en primer lugar ya que contiene una breve explicación de los elementos destacados del archivo docker-compose.yml

Empezamos por agregar al docker-compose.yml la siguiente definición:

jenkins:
    image: jenkinsci/blueocean
    user: root
    ports:
      - "8080:8080"
      - "8443:8443"
      - "50000:50000"
    volumes:
      - /srv/jenkins/jenkins_data:/var/jenkins_home
      - /srv/jenkins/home:/home
      - /var/run/docker.sock:/var/run/docker.sock

Y ejecutamos el siguiente comando:

$ docker-compose up -d jenkins

Para ver el progreso del arranque, utilizaremos el siguiente comando:

$ docker ps -a

el cual nos listara todos los contenedores que existen en el host (la opcion -a le indica al comando que muestre tanto los contenedores que están corriendo como los que se encuentren abajo. Si omitimos la opcion, nos mostrará únicamente los que se encuentran arriba). Su output son una variedad de columnas, pero para el ejercicio actual nos interesan las primeras 2:

CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                            PORTS                                                                      NAMES
19be028b497e        jenkinsci/blueocean       "/sbin/tini -- /usr/…"   3 minutes ago       Up 3 minutes                      0.0.0.0:8080->8080/tcp, 0.0.0.0:8443->8443/tcp, 0.0.0.0:50000->50000/tcp   compose-files_jenkins_1

Cada contenedor tiene un hash como ID. Tomaremos el ID del contenedor de jenkins y abriremos el log del contenedor:

$ docker logs -f 2aef714cab4c

La opcion -f le indica al comando que despues de desplegar los logs, mantenga la consola pegada al log, de manera que nos mostrará los mensajes que vayan siendo generados en tiempo real.

Podemos ver que el contenedor terminó de levantarse cuando podamos vel el siguiente mensaje:

*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

a13291b8687a43a681f00ae76a2e589a

This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

*************************************************************

Un detalle que debemos recordar es el mapeo de directorios que hicimos en el docke-compose.yml, de manera que cuando la aplicación nos está enviando a la carpeta /var/jenkins_home, ésta se traduce a la carpeta /srv/jenkins/jenkins_home en el host de docker.

Una vez finalizado el arranque, podemos entrar a la aplicación por medio de la URL:

http://test-vm:8080

Al ingresar, la página inicial de configuración solicitará el password temporal que mostró en el log. Continuará con la instalación de plugins, seguido de la creación del primer usuario Admin.