Volver al blog
DockerKubernetesDevOps
· 13 min lectura

Docker + Kubernetes para desarrolladores backend

Guía práctica para devs que necesitan entender contenedores sin convertirse en DevOps.

Dockerfile optimizado para Java/Spring Boot

El error más común: un Dockerfile que copia todo el proyecto y compilar dentro del contenedor. Resultado: imágenes de 1.5GB y builds de 10 minutos. La solución: multi-stage builds.

# Stage 1: Build
FROM maven:3.9-eclipse-temurin-17 AS build
WORKDIR /app
COPY pom.xml .
RUN mvn dependency:go-offline
COPY src ./src
RUN mvn package -DskipTests

# Stage 2: Run
FROM eclipse-temurin:17-jre-alpine
COPY --from=build /app/target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

Health checks que importan

Kubernetes necesita saber si tu pod está sano. Configura liveness probe (el pod está vivo?), readiness probe (puede recibir tráfico?) y startup probe (ya terminó de iniciar?). Spring Boot Actuator te da estos endpoints gratis con /actuator/health.

Resource limits: no son opcionales

Siempre configura requests y limits de CPU/memoria. Sin limits, un pod con memory leak puede tumbar todo el nodo. En SAGCOM usamos: requests 256Mi/250m, limits 512Mi/500m para servicios estándar. Ajusta según tu profiling real.

Debugging en producción

Cuando algo falla en un pod: kubectl logs, kubectl describe pod, kubectl exec para entrar al contenedor. Pero lo más importante: logs estructurados en JSON que puedas buscar en tu herramienta de observabilidad. Sin esto estás ciego.

Yoser Pérez

Yoser Pérez

Desarrollador Senior Fullstack · +15 años de experiencia

Contactar →

¿Quieres hablar de tecnología?

Si tienes dudas técnicas o quieres discutir un enfoque, escríbeme.

Contactar