0Pricing
Scala for Backend Engineering & Functional Programming · Lección

Contenerización con Docker

Aprenda a contenerizar sus aplicaciones de Scala con Docker para conseguir entornos coherentes y simplificar el despliegue.

Contenerización con Docker es una lección gratuita de Scala for Backend Engineering & Functional Programming en CoddyKit. Esta es la lección 2 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Scala for Backend Engineering & Functional Programming, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Scala for Backend Engineering & Functional Programming incluye 3 lecciones en total.

¿Por qué contenerizar las aplicaciones de Scala?

Al desplegar aplicaciones de Scala, garantizar un entorno coherente entre desarrollo, pruebas y producción puede ser complicado. ¡Aquí es donde entra en juego la contenerización!

Un contenedor empaqueta la aplicación y todas sus dependencias (como la máquina virtual de Java, las bibliotecas y la configuración) en una única unidad aislada. Esto garantiza que se ejecute de la misma forma en cualquier entorno.

Docker: imágenes y contenedores

Docker es la plataforma de contenerización más popular. Utiliza dos conceptos fundamentales:

  • Imagen de Docker: paquete ligero, independiente y ejecutable que incluye todo lo necesario para ejecutar una parte de software, incluido el código, un entorno de ejecución, las herramientas del sistema, las bibliotecas del sistema y la configuración. Puede considerarla como un plano.
  • Contenedor de Docker: instancia ejecutable de una imagen de Docker. Al ejecutar una imagen, esta se convierte en un contenedor. Los contenedores están aislados entre sí y del sistema anfitrión.

Su primera ejecución de Docker

Intentemos ejecutar un contenedor de Docker muy básico. Este comando descarga la imagen hello-world (si aún no está presente) y la ejecuta como contenedor.

Verá un mensaje que confirma que Docker funciona correctamente.

docker run hello-world

Nuestra aplicación sencilla de Scala

Antes de contenerizarla, creemos una aplicación mínima de Scala. Este programa simplemente imprimirá un mensaje en la consola.

¡Pronto la empaquetaremos en una imagen de Docker!

object Main extends App {
  val message = "Hello from CoddyKit's Docker container!"
  println(message)
}

Plano: el Dockerfile

Un Dockerfile es un archivo de texto que contiene todos los comandos que un usuario puede ejecutar en la línea de comandos para ensamblar una imagen. Es como una receta para crear su imagen de Docker.

Entre las instrucciones principales se incluyen:

  • FROM: establece la imagen base.
  • WORKDIR: establece el directorio de trabajo.
  • COPY: copia archivos en la imagen.
  • RUN: ejecuta comandos durante la creación de la imagen.
  • CMD: especifica el comando que se ejecutará cuando se inicie el contenedor.

Dockerfile: etapa de compilación para Scala

Para Scala, solemos utilizar una compilación de varias etapas. En la primera etapa se crea nuestra aplicación. Utilizamos una imagen de OpenJDK con un JDK completo para compilar el código de 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

Dockerfile: etapa de ejecución para Scala

La segunda etapa crea una imagen mucho más pequeña que contiene únicamente el JRE (Java Runtime Environment) y nuestra aplicación de Scala compilada (el archivo JAR). Esto mantiene al mínimo el tamaño de la imagen final.

# 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 de Scala

Aquí tiene el Dockerfile completo de varias etapas para nuestra aplicación de Scala. Este archivo debe llamarse Dockerfile y colocarse en el mismo directorio que 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"]

Creación de la imagen de Docker

Ahora que tenemos nuestro Dockerfile y Main.scala, creemos la imagen de Docker. La opción -t asigna una etiqueta a nuestra imagen con un nombre (por ejemplo, scala-hello) y . indica que el directorio actual es el contexto de compilación.

docker build -t scala-hello .

Ejecución de su aplicación de Scala contenerizada

Después de crear la imagen, puede ejecutar su aplicación de Scala dentro de un contenedor de Docker mediante el comando docker run. Esto ejecutará la instrucción CMD definida en su Dockerfile.

docker run scala-hello

¡Debería ver "Hello from CoddyKit's Docker container!" impreso en la consola!

Compruebe sus conocimientos

Ponga a prueba sus conocimientos sobre los Dockerfiles.

Resumen: contenerización de Scala

¡Ha aprendido correctamente los conceptos básicos para contenerizar una aplicación de Scala con Docker!

  • Las imágenes de Docker son planos; los contenedores son instancias ejecutables.
  • Un Dockerfile es una receta para crear su imagen.
  • Las compilaciones de varias etapas ayudan a crear imágenes pequeñas y eficientes para aplicaciones de Scala.
  • Los comandos como docker build y docker run gestionan sus imágenes y contenedores.

Estos conocimientos son fundamentales para desplegar microservicios de Scala de forma coherente y fiable.

Preguntas frecuentes

¿La lección «Contenerización con Docker» es gratis?

Sí — el texto completo de «Contenerización con Docker» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Scala for Backend Engineering & Functional Programming, actualiza a CoddyKit PRO. El curso de Scala for Backend Engineering & Functional Programming incluye 3 lecciones en total.

¿Qué aprenderé en «Contenerización con Docker»?

Aprenda a contenerizar sus aplicaciones de Scala con Docker para conseguir entornos coherentes y simplificar el despliegue. Practicas Scala for Backend Engineering & Functional Programming con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Scala for Backend Engineering & Functional Programming?

No se requiere experiencia previa. Scala for Backend Engineering & Functional Programming en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 3.

¿Cuánto tiempo toma la lección «Contenerización con Docker»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Scala for Backend Engineering & Functional Programming?

Sí. Cada lección de Scala for Backend Engineering & Functional Programming incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Diseño de microservicios en Scala
  2. Contenerización con Docker
  3. Estrategias de despliegue en la nube
← Volver a Scala for Backend Engineering & Functional Programming