Obtenga todos los packages dependientes de Docker interior

Puedo get todos mis packages dependientes cuando hago lo siguiente:

$ cd myrepo $ go get -d ./... 

Pero, ¿cuál es la mejor manera de hacer esto en Docker? No quiero todos los repositorys dentro de mi aplicación Docker, así que estoy buscando una forma de ejecutar esto dentro de un contenedor acoplable a algún volumen (o algo así) y reutilizarlo.

Estaba pensando en algo así como. Dockerfile

 FROM golang:1.8 WORKDIR /app ADD ./src 

Construir image

 $ docker build -t myapp . $ docker run myapp go get -d ./... 

¿Cómo puedo reutilizar las dependencies sin tirarlas / downloadlas todas las veces? Los quiero en una especie de volumen. Conozco los volúmenes de Docker un poco, pero no sé cómo usarlo en este caso.

La mejor forma de hacerlo es usar el patrón del generador. En la primera image, descarga todas las dependencies y crea el ejecutable. En el segundo, copy el ejecutable en una nueva image. Puede usar la image de borrador como base, pero alpine es quizás mejor porque también es pequeña, pero proporciona un shell y un administrador de packages para algo así como certificates para https.

Si primero copy las fonts e instala las dependencies, se downloadán con cada cambio de fuente, por lo que es mejor usar algo como ir dep. Con él puede copyr el file Gopkg, instalar sus dependencies y luego copyr las fonts.

Artículo oficial https://docs.docker.com/engine/userguide/eng-image/multistage-build/ y en más detalle https://blog.alexellis.io/mutli-stage-docker-builds/