"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ## ¿Cómo almacenar en caché previamente las dependencias de Go en imágenes de Docker para compilaciones más rápidas?

## ¿Cómo almacenar en caché previamente las dependencias de Go en imágenes de Docker para compilaciones más rápidas?

Publicado el 2024-11-08
Navegar:467

## How to Pre-Cache Go Dependencies in Docker Images for Faster Builds?

Creación eficiente de imágenes de Docker con dependencias almacenadas previamente en caché

Al construir imágenes de Docker, es fundamental minimizar el tiempo de compilación. Una estrategia es almacenar en caché las dependencias. Sin embargo, esto requiere crear primero las dependencias, lo que puede llevar mucho tiempo.

¿Hay alguna forma de crear previamente varias dependencias enumeradas en el archivo go.mod?

La respuesta está en utilizando los mecanismos de almacenamiento en caché de Docker. La estructura Dockerfile sugerida incluye una capa de almacenamiento en caché crucial:

FROM scratch
COPY --from=build /out/example /

Este paso copia el ejecutable creado desde una etapa de compilación intermedia a la imagen final. Sin embargo, el ingrediente clave está en la etapa de compilación:

RUN --mount=type=cache,target=/root/.cache/go-build go build -o /out/example .

Este comando monta el directorio de caché go build predeterminado (/root/.cache/go-build) y ejecuta el comando go build. El caché garantiza que las dependencias se descarguen y compilen solo una vez, lo que reduce significativamente los tiempos de compilación para compilaciones posteriores.

Para habilitar el almacenamiento en caché, es esencial establecer la variable de entorno DOCKER_BUILDKIT en 1:

DOCKER_BUILDKIT=1 docker build -t myimage .

Si sigue estos pasos, puede crear previamente todas las dependencias en go.mod y aprovecharlas. almacenamiento en caché para optimizar la creación de imágenes de Docker.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3