Questo esercizio guida alla configurazione di una pipeline CI/CD utilizzando Jenkins, Docker e una semplice applicazione Flask. La pipeline consente di costruire, taggare e pubblicare un'immagine Docker su Docker Hub. Inoltre, viene spiegato come eseguire manualmente l'immagine per verificare che l'applicazione funzioni.
- Docker installato sul sistema host.
- Accesso a un account GitHub e Docker Hub.
- Un repository GitHub con il file
Jenkinsfile
e il codice dell'applicazione (come formazione_sou_k8s).
-
Crea un container Jenkins con privilegi di root per installare Docker:
sudo docker run -d --name jenkins_master --user root \ -p 8080:8080 -p 50000:50000 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v jenkins_home:/var/jenkins_home \ jenkins/jenkins:lts
-
Recupera la password iniziale per accedere alla dashboard di Jenkins:
sudo docker exec jenkins_master cat /var/jenkins_home/secrets/initialAdminPassword
-
Accedi alla dashboard di Jenkins su http://localhost:8080 e inserisci la password.
-
Durante la configurazione iniziale:
- Salta la configurazione dell’utente amministratore.
- Installa i plugin suggeriti.
-
Entra nel container Jenkins con privilegi sudo:
sudo docker exec -it jenkins_master bash
-
Aggiorna i pacchetti e installa Docker:
apt-get update && apt-get install -y docker.io
-
Esci dal container:
exit
- Vai su Gestisci Jenkins > Credenziali > System > Credenziali globali.
- Clicca su Add Credentials e aggiungi:
- ID github_credentials: i tuoi username e password di GitHub.
- ID dockerhub_credentials: i tuoi username e password di Docker Hub.
- Forka o utilizza il repository formazione_sou_k8s.
- Crea una release su GitHub con il tag v1.0:
- Vai su Releases > Create a new release.
- Inserisci v1.0 come tag e pubblica.
- Crea un nuovo elemento pipeline sulla dashboard di Jenkins e chiamalo flask-app-example-build.
- Configura l'elemento per utilizzare il repository GitHub:
- Inserisci come URL di Deposito il link del repository GitHub.
- Usa le credenziali github_credentials configurate in precedenza.
- Come Ramo indicare */main.
- Salva e avvia la pipeline.
Se la pipeline è configurata correttamente, verrà:
- Clonato il repository.
- Creata un’immagine Docker taggata come lucacisotto/flask-app-example:v1.0.
- L’immagine verrà pushata su Docker Hub.
-
Sul tuo computer, effettua il pull dell’immagine da Docker Hub:
sudo docker pull lucacisotto/flask-app-example:v1.0
-
Esegui l’immagine sulla porta 5000:
sudo docker run -p 5000:5000 lucacisotto/flask-app-example:v1.0
-
Apri un browser e visita http://localhost:5000. Dovresti vedere il messaggio “hello world”.
Ora la pipeline è configurata e l’applicazione è funzionante.