Saltar al contenido

¿Recuperar manualmente las dependencias de go.mod?

Solución:

Fue un problema # 26610, que ya está solucionado.

Así que ahora puedes usar:

go mod download

Para que esto funcione, solo necesita go.mod / go.sum archivos.

Por ejemplo, aquí se explica cómo tener una compilación de Docker de varias etapas en caché:

FROM golang:1.12-alpine as builder
RUN apk --no-cache add ca-certificates git
WORKDIR /build/myapp

# Fetch dependencies
COPY go.mod ./
RUN go mod download

# Build
COPY . ./
RUN CGO_ENABLED=0 go build

# Create final image
FROM alpine
WORKDIR /root
COPY --from=builder /build/myapp/myapp .
EXPOSE 8080
CMD ["./myapp"]

Puede utilizar el go mod vendor comando que creará un vendor carpeta en la carpeta raíz del módulo principal y copie todas las dependencias en ella. Después de esto, puede pasar el -mod=vendor param a la herramienta go, y luego dependencias de la vendor La carpeta se utilizará para construir / compilar / probar su aplicación.

Entonces, qué puede hacer para acelerar sus compilaciones:

  1. Ejecutar el go mod vendor comando para tener una versión real de sus dependencias.
  2. Guardar / almacenar en caché esto vendor carpeta.
  3. Durante las compilaciones, restaure este vendor carpeta y compile / instale su aplicación pasando el -mod=vendor argumento a la herramienta go, por lo que no se descargarán dependencias, pero el contenido de la vendor se utilizará la carpeta.

Citando de go help mod:

Módulos y venta

Cuando se utilizan módulos, el comando go ignora por completo los directorios de proveedores.

De forma predeterminada, el comando go satisface las dependencias descargando módulos de sus fuentes y utilizando esas copias descargadas (después de la verificación, como se describe en la sección anterior). Para permitir la interoperación con versiones anteriores de Go, o para garantizar que todos los archivos utilizados para una compilación se almacenen juntos en un solo árbol de archivos, ‘go mod vendor’ crea un directorio llamado proveedor en el directorio raíz del módulo principal y almacena allí todos los paquetes de los módulos de dependencia que se necesitan para admitir compilaciones y pruebas de paquetes en el módulo principal.

Para construir usando el directorio de proveedores de nivel superior del módulo principal para satisfacer las dependencias (deshabilitando el uso de las fuentes de red habituales y las cachés locales), use ‘go build -mod = vendor’. Tenga en cuenta que solo se utiliza el directorio de proveedores de nivel superior del módulo principal; Los directorios de proveedores en otras ubicaciones aún se ignoran.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *