Containerizzazione con Docker
Impari a containerizzare le Sue applicazioni Scala con Docker per ottenere ambienti coerenti e semplificare il deployment.
Containerizzazione con Docker è una lezione Scala for Backend Engineering & Functional Programming gratuita su CoddyKit. Questa è la lezione 2 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Scala for Backend Engineering & Functional Programming, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Scala for Backend Engineering & Functional Programming include 3 lezioni in totale.
Perché containerizzare le applicazioni Scala?
Quando si distribuiscono applicazioni Scala, garantire un ambiente coerente tra sviluppo, test e produzione può essere difficile. È qui che entra in gioco la containerizzazione!
Un container racchiude l'applicazione e tutte le sue dipendenze (come la Java Virtual Machine, le librerie e la configurazione) in un'unica unità isolata. In questo modo viene garantito lo stesso comportamento in qualsiasi ambiente.
Docker: immagini e container
Docker è la piattaforma di containerizzazione più diffusa. Utilizza due concetti fondamentali:
- Immagine Docker: un pacchetto leggero, autonomo ed eseguibile che include tutto il necessario per eseguire un software, inclusi codice, runtime, strumenti di sistema, librerie di sistema e impostazioni. La si può considerare come un modello.
- Container Docker: un'istanza eseguibile di un'immagine Docker. Quando si esegue un'immagine, questa diventa un container. I container sono isolati tra loro e dal sistema host.
Il primo comando Docker run
Proviamo a eseguire un container Docker molto semplice. Questo comando scarica l'immagine hello-world (se non è già presente) e la esegue come container.
Verrà visualizzato un messaggio che conferma il corretto funzionamento di Docker!
docker run hello-world
La nostra semplice app Scala
Prima di creare il container, prepariamo un'applicazione Scala minimale. Questo programma si limiterà a stampare un messaggio sulla console.
Presto la inseriremo in un'immagine Docker!
object Main extends App {
val message = "Hello from CoddyKit's Docker container!"
println(message)
}Schema: il Dockerfile
Un Dockerfile è un file di testo che contiene tutti i comandi che un utente può eseguire dalla riga di comando per assemblare un'immagine. È come una ricetta per creare la propria immagine Docker.
Le istruzioni principali includono:
FROM: imposta l'immagine di base.WORKDIR: imposta la directory di lavoro.COPY: copia i file nell'immagine.RUN: esegue i comandi durante la creazione dell'immagine.CMD: specifica il comando da eseguire all'avvio del container.
Dockerfile: fase di build per Scala
Per Scala, spesso si usa una build multi-stage. La prima fase crea la nostra applicazione. Usiamo un'immagine OpenJDK con un JDK completo per compilare il codice Scala.
# Stage 1: Build the Scala application
FROM adoptopenjdk/openjdk11:latest as builder
WORKDIR /app
COPY Main.scala .
RUN scalac Main.scala
RUN jar -cvf app.jar Main.classDockerfile: fase di runtime per Scala
La seconda fase crea un'immagine molto più piccola, contenente solo il JRE (Java Runtime Environment) e l'applicazione Scala compilata (il file JAR). In questo modo le dimensioni dell'immagine finale restano minime.
# Stage 2: Create a minimal runtime image
FROM adoptopenjdk/openjdk11:jre-hotspot
WORKDIR /app
COPY --from=builder /app/app.jar .
CMD ["java", "-jar", "app.jar"]Dockerfile completo per Scala
Ecco il Dockerfile multi-stage completo per la nostra applicazione Scala. Questo file deve chiamarsi Dockerfile e trovarsi nella stessa directory di Main.scala.
# Stage 1: Build the Scala application
FROM adoptopenjdk/openjdk11:latest as builder
WORKDIR /app
COPY Main.scala .
RUN scalac Main.scala
RUN jar -cvf app.jar Main.class
# Stage 2: Create a minimal runtime image
FROM adoptopenjdk/openjdk11:jre-hotspot
WORKDIR /app
COPY --from=builder /app/app.jar .
CMD ["java", "-jar", "app.jar"]Creazione dell'immagine Docker
Ora che abbiamo Dockerfile e Main.scala, creiamo l'immagine Docker. Il flag -t assegna alla nostra immagine un nome (ad esempio scala-hello) e . indica che la directory corrente è il contesto di build.
docker build -t scala-hello .
Esecuzione dell'app Scala containerizzata
Dopo aver creato l'immagine, può eseguire l'applicazione Scala all'interno di un container Docker usando il comando docker run. In questo modo verrà eseguita l'istruzione CMD definita nel Dockerfile.
docker run scala-hello
Nella console dovrebbe essere visualizzato "Hello from CoddyKit's Docker container!"!
Verifichi le sue conoscenze
Verifichi la sua comprensione dei Dockerfile.
Riepilogo: containerizzazione di Scala
Ha imparato con successo le nozioni di base per containerizzare un'applicazione Scala con Docker!
- Le immagini Docker sono modelli, mentre i container sono istanze eseguibili.
- Un Dockerfile è una ricetta per creare la propria immagine.
- Le build multi-stage aiutano a creare immagini piccole ed efficienti per le app Scala.
- Comandi come
docker buildedocker rungestiscono immagini e container.
Queste conoscenze sono fondamentali per distribuire microservizi Scala in modo coerente e affidabile.
Domande Frequenti
La lezione «Containerizzazione con Docker» è gratuita?
Sì — il testo completo di «Containerizzazione con Docker» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Scala for Backend Engineering & Functional Programming, passa a CoddyKit PRO. Il corso Scala for Backend Engineering & Functional Programming include 3 lezioni in totale.
Cosa imparerò in «Containerizzazione con Docker»?
Impari a containerizzare le Sue applicazioni Scala con Docker per ottenere ambienti coerenti e semplificare il deployment. Eserciti Scala for Backend Engineering & Functional Programming con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Scala for Backend Engineering & Functional Programming?
Non è richiesta alcuna esperienza precedente. Scala for Backend Engineering & Functional Programming su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 3.
Quanto tempo richiede la lezione «Containerizzazione con Docker»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Scala for Backend Engineering & Functional Programming?
Sì. Ogni lezione Scala for Backend Engineering & Functional Programming include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Progettazione di microservizi Scala
- Containerizzazione con Docker
- Strategie di deployment sul cloud