Sobes.tech
Middle

¿Cuál es su experiencia en la parametrización dinámica de archivos Docker?

sobes.tech AI

Respuesta de la IA

Desarrollé plantillas de archivos Docker utilizando variables de entorno y argumentos de compilación.

Aplicando los siguientes métodos:

  1. Instrucciones ARG para argumentos de compilación:

    FROM ubuntu:latest
    ARG APP_VERSION
    RUN echo "Construyendo versión: $APP_VERSION"
    
  2. Instrucciones ENV para variables de entorno en tiempo de ejecución:

    FROM alpine:latest
    ENV PORT=8080
    CMD ["sh", "-c", "echo Escuchando en el puerto $PORT"]
    
  3. Pasar ARG y ENV mediante --build-arg y -e durante la compilación/ejecución:

    docker build --build-arg APP_VERSION=1.2.0 .
    docker run -e PORT=9000 my_image
    
  4. Uso de compilación multinivel (Multi-stage builds) para transferir valores entre etapas:

    # etapa de compilación
    FROM golang:1.20 as builder
    ARG BUILD_TAG
    WORKDIR /app
    RUN go build -ldflags "-X main.version=$BUILD_TAG" -o app .
    
    # etapa final
    FROM alpine:latest
    COPY --from=builder /app/app /
    CMD ["/app"]
    
  5. Integración con sistemas CI/CD (por ejemplo, GitLab CI, Jenkins) para sustituir automáticamente parámetros (versión de la aplicación, entorno, claves API) durante la construcción de la imagen o al desplegar el contenedor.

Este enfoque permite crear imágenes Docker más flexibles y reutilizables, adaptadas a diferentes entornos y requisitos, sin necesidad de modificar el propio archivo Docker.