Laboratorio: Creación de un Microservicio "Hello World" con Spring Boot, Docker y Play with Docker
Introducción
Este laboratorio te guiará a través de los pasos necesarios para crear un microservicio básico "Hello World" utilizando Spring Boot, GitHub, GitHub Codespaces y Play with Docker.
Paso 1: Configuración del Repositorio en GitHub
- Crear un Repositorio en GitHub:
- Ve a GitHub y accede a tu cuenta.
- Haz clic en "New" para crear un nuevo repositorio.
- Asigna un nombre al repositorio, por ejemplo,
hello-world-microservice. - Inicializa el repositorio con un archivo README.
Paso 2: Configuración de GitHub Codespaces
- Crear un Codespace:
- En la página principal del repositorio, haz clic en el botón "Code" y selecciona "Create codespace on main".
- Esto abrirá un entorno de desarrollo en la nube donde podrás editar y ejecutar tu proyecto.
2. Configurar Codespace: * Crear archivo con el nombre ".devcontainer/devcontainer.json" * Pegar la siguiente configuración
{
"name": "Java Dev Environment",
"image": "mcr.microsoft.com/devcontainers/java:1-21",
"features": {
"ghcr.io/devcontainers/features/java:1": {
"version": "none",
"installMaven": "true",
"mavenVersion": "3.8.6",
"installGradle": "false"
},
"ghcr.io/devcontainers/features/docker-in-docker:1": {}
},
"customizations": {
"vscode": {
"extensions": [
"vscjava.vscode-java-pack",
"streetsidesoftware.code-spell-checker",
"pivotal.vscode-spring-boot",
"vmware.vscode-boot-dev-pack"
]
}
},
"postCreateCommand": "mvn clean install"
}
- Asegurate de la instalación de Java y Maven:
- java -version
- mvn -version
Paso 3: Configuración del Proyecto Spring Boot
- Generar el Proyecto Spring Boot:
- Verifica, que se tenga la extensión de Spring Boot Extension Pack

- Dirigite a la barra Command Palette Ctrl+Shift+P
- Buscar y seleccionar Spring Initializr: Create a Maven Project
- Configura el proyecto con las siguientes opciones:
- Language: Java
- Spring Boot: Última versión estable
- Group: com.eci.arcn
- Artifact: microservice-helloworld
- Name: microservice-helloworld
- Packaging: Jar
- Java Version: 17
- Agrega la dependencia
Spring Web. - Haz clic en "Generate" para descargar el proyecto.
- Nota: una vez creado el proyecto, asegurate de mover los archivos a la raiz del workspace
- Verifica, que se tenga la extensión de Spring Boot Extension Pack
Paso 4: Implementación del Servicio "Hello World"
- Crear el Controlador:
- En GitHub Codespaces, navega a
src/main/java/com/eci/arcn/microservice-helloworld. - Crea una nueva clase llamada
HelloWorldController.javacon el siguiente contenido:
- En GitHub Codespaces, navega a
package com.eci.arcn.helloworld;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloWorldController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
-
Configurar la Aplicación:
- Asegúrate de que la clase principal del proyecto esté anotada con
@SpringBootApplication.
- Asegúrate de que la clase principal del proyecto esté anotada con
-
Ejecutar la Aplicación:
- Utiliza el terminal integrado en Codespaces para ejecutar tu aplicación con el comando:
bash mvn spring-boot:run- Verifica que la aplicación se ejecute correctamente y esté accesible ejecutando
bash curl http://localhost:8080/hello
Paso 5: Crear y Subir la Imagen Docker
-
Crear el Dockerfile:
- En la raíz del proyecto, crea un archivo llamado
Dockerfilecon el siguiente contenido:
dockerfile FROM openjdk:17-jdk-slim COPY target/microservice-helloworld.jar microservice-helloworld.jar ENTRYPOINT ["java", "-jar", "/microservice-helloworld.jar"] - En la raíz del proyecto, crea un archivo llamado
-
Construir la Imagen Docker:
- Ejecuta el siguiente comando para compilar el proyecto y generar el archivo JAR:
bash mvn clean package - Construye la imagen Docker con el comando:
bash docker build -t microservice-helloworld .
- Ejecuta el siguiente comando para compilar el proyecto y generar el archivo JAR:
-
Subir la Imagen a Docker Hub:
- Asegurate de tener/crear cuenta en Docker Hub
- Etiqueta la imagen con tu nombre de usuario de Docker Hub:
bash docker tag microservice-helloworld <tu-usuario>/microservice-helloworld- Inicia sesión en Docker Hub:
- Github codespace, genera un login del space a Docker Hub, por tanto debes desloguear primero
bash docker logout- Una vez deslogueado, loguearse con el usuario de Docker Hub
bash docker login -u <tu-usuario>- Te pedira un password, para el cual debes generar un "Personal Access Token" en Docker Hub
- Sube la imagen a Docker Hub:
bash docker push <tu-usuario>/microservice-helloworld
Paso 6: Ejecutar el Servicio en Play with Docker
-
Acceder a Play with Docker:
- Ve a Play with Docker y accede con tu cuenta de Docker Hub.
-
Crear una Instancia:
- Haz clic en "Start" para crear una nueva instancia de Docker.
-
Ejecutar el Contenedor:
- En Play with Docker, ejecuta el contenedor con el siguiente comando:
bash docker run -p 8080:8080 <tu-usuario>/microservice-helloworld- Accede al servicio desde el enlace proporcionado por Play with Docker, añadiendo
/helloal final de la URL para ver el mensaje "Hello, World!".