Guida per Principianti su Docker Compose

Ciao a tutti, futuri maestri di Docker! Sono entusiasta di essere il vostro guida in questo viaggio nel mondo di Docker Compose. Come qualcuno che ha insegnato scienze informatiche per anni, ho visto molti studenti affrontare difficoltà con i concetti di containerizzazione. Ma non temete! Alla fine di questo tutorial, sarai in grado di orchestrare container come un professionista.

Docker - Compose

Cos'è Docker Compose?

Prima di immergerci, iniziiamo con le basi. Immagina di stanno pianificando una grande festa (perché chi non adora una buona analogia?). Devi coordinare il cibo, le bevande, la musica e le decorazioni. Docker Compose è come il tuo strumento per pianificare feste, ma per i container!

In termini tecnici, Docker Compose è uno strumento per definire ed eseguire applicazioni Docker multi-container. Ti permette di utilizzare un file YAML per configurare i servizi, le reti e i volumi della tua applicazione, poi creare e avviare tutti i servizi dalla tua configurazione con un solo comando.

Installazione di Docker Compose

Ora, installiamo Docker Compose sul tuo sistema. Il processo è facilissimo (mmmm... torta).

Per Utenti Windows e Mac

Se hai già installato Docker Desktop, complimenti! Hai già Docker Compose. Viene fornito con l'installazione. Puoi saltare alla sezione successiva e fare una danza felice.

Per Utenti Linux

Per i nostri amici Linux, dovrete installare Docker Compose separately. Ecco come:

  1. Scarica la versione stabile corrente di Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  1. Applica i permessi esecutivi al binario:
sudo chmod +x /usr/local/bin/docker-compose
  1. Verifica l'installazione:
docker-compose --version

Se vedi il numero di versione, sei a posto!

Creazione del Tuo Primo File Docker-Compose

Ora che abbiamo Docker Compose installato, creiamo il nostro primo file docker-compose.yml. Questo file è come la ricetta per la tua applicazione - dice a Docker quali ingredienti (servizi) hai bisogno e come preparali.

Creiamo una semplice applicazione web utilizzando Python Flask e Redis. Non preoccuparti se non sei familiare con queste tecnologie - manterremo le cose semplici!

Crea una nuova directory per il tuo progetto e naviga al suo interno:

mkdir my_first_compose_project
cd my_first_compose_project

Ora, creiamo il nostro file docker-compose.yml:

version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"

Analizziamo questo:

  • version: '3': Specifica la versione del formato del file Docker Compose che stiamo utilizzando.
  • services: Questa sezione definisce i container che vogliamo eseguire.
  • web: Questo è il nostro servizio di applicazione Flask.
  • build: .: Dice a Docker di costruire un'immagine da un file Dockerfile nella directory corrente.
  • ports: - "5000:5000": Mappa la porta 5000 sull'host alla porta 5000 nel container.
  • redis: Questo è il nostro servizio Redis.
  • image: "redis:alpine": Dice a Docker di utilizzare l'immagine ufficiale Redis da Docker Hub.

Creazione dell'Applicazione Flask

Ora, creiamo una semplice applicazione Flask. Crea un file chiamato app.py:

from flask import Flask
from redis import Redis

app = Flask(__name__)
redis = Redis(host='redis', port=6379)

@app.route('/')
def hello():
redis.incr('hits')
return f'Hello World! I have been seen {redis.get("hits").decode("utf-8")} times.'

if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)

Questa semplice applicazione incrementa un contatore in Redis ogni volta che la pagina viene visitata.

Creazione del Dockerfile

Prossimo, dobbiamo creare un Dockerfile per costruire la nostra applicazione Flask. Crea un file chiamato Dockerfile:

FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]

Questo Dockerfile:

  1. Partenza dall'immagine Python 3.7 Alpine
  2. Imposta la directory di lavoro a /code
  3. Imposta le variabili d'ambiente per Flask
  4. Installa le dipendenze necessarie
  5. Copia e installa i requisiti Python
  6. Espone la porta 5000
  7. Copia la directory corrente nel container
  8. Imposta il comando per eseguire Flask

Creazione del File dei Requisiti

Ultimo, dobbiamo specificare le nostre dipendenze Python. Crea un file chiamato requirements.txt:

flask
redis

Esecuzione della Tua Applicazione Docker Compose

Ora arrivese la parte emozionante - eseguire la tua applicazione!Nel tuo terminale, esegui:

docker-compose up

Dovresti vedere Docker Compose costruire le tue immagini e avviare i tuoi servizi. Una volta fatto, apri un browser web e vai a http://localhost:5000. Dovresti vedere il tuo messaggio "Hello World", e il contatore dovrebbe incrementare ogni volta che ricarichi la pagina.

Comandi di Docker Compose

Ecco una tabella utile con alcuni comandi comuni di Docker Compose:

Comando Descrizione
docker-compose up Crea e avvia i container
docker-compose down Ferma e rimuove i container, le reti, le immagini e i volumi
docker-compose ps Elenca i container
docker-compose logs Visualizza l'output dei container
docker-compose build Costruisce o ricostruisce i servizi
docker-compose start Avvia i servizi
docker-compose stop Ferma i servizi

Conclusione

Complimenti! Hai appena creato ed eseguito la tua prima applicazione multi-container utilizzando Docker Compose. Abbiamo solo sfiorato la superficie di ciò che Docker Compose può fare, ma spero che questo tutorial ti abbia fornito una solida base su cui costruire.

Ricorda, imparare Docker e la containerizzazione è come imparare a cucinare - richiede pratica, ma una volta che hai preso confidenza, sarai in grado di creare ricette complesse con multi-container in un batter d'occhio!

Buona composizione, futuri chef Docker!

Credits: Image by storyset