¿Cómo importar un package impopular a Docker usando la image oficial de GOLang?

He publicado esta pregunta como un problema en el repository de imagick git, pero tiene una base de usuarios muy pequeña, por lo que espero get ayuda de aquí. He intentado durante unos días importar https://github.com/gographics/imagick a Docker utilizando el file oficial doLang docker para un proyecto en el que estoy trabajando, pero no lo he logrado. Como este package no es popular, ejecutar apt-get no funcionará. Intenté (vacilantemente) simplemente agregar los files al contenedor, pero eso no funcionó. Aquí está el DockerFile que he creado y el error que produce: === DOCKERFILE ===

# 1) Use the official go docker image built on debian. FROM golang:latest # 2) ENV VARS ENV GOPATH $HOME/<PROJECT> ENV PATH $HOME/<PROJECT>/bin:$PATH # 3) Grab the source code and add it to the workspace. ADD . /<GO>/src/<PROJECT> ADD . /<GO>/gopkg.in # Trying to add the files manually... Doesn't help. ADD . /opt/local/share/doc/ImageMagick-6 # 4) Install revel and the revel CLI. #(The commented out code is from previous attempts) #RUN pkg-config --cflags --libs MagickWand #RUN go get gopkg.in/gographics/imagick.v2/imagick RUN go get github.com/revel/revel RUN go get github.com/revel/cmd/revel # 5) Does not work... Can't find the package. #RUN apt-get install libmagickwand-dev # 6) Get godeps from main repo RUN go get github.com/tools/godep # 7) Restore godep dependencies WORKDIR /<GO>/src/<PROJECT> RUN godep restre # 8) Install Imagick #RUN go build -tags no_pkgconfig gopkg.in/gographics/imagick.v2/imagick # 9) Use the revel CLI to start up our application. ENTRYPOINT revel run <PROJECT> dev 9000 # 10) Open up the port where the app is running. EXPOSE 9000 

=== END DOCKERFILE ===

Esto me permite build el contenedor Docker, pero cuando bash ejecutarlo, aparece el siguiente error en los loggings de cinemática:

=== ERROR DE DOCKER ===

 ERROR 2016/08/20 21:15:10 build.go:108: # pkg-config --cflags MagickWand MagickCore MagickWand MagickCore pkg-config: exec: "pkg-config": executable file not found in $PATH 2016-08-20T21:15:10.081426584Z ERROR 2016/08/20 21:15:10 build.go:308: Failed to parse build errors: #pkg-config --cflags MagickWand MagickCore MagickWand MagickCore pkg-config: exec: "pkg-config": executable file not found in $PATH 2016-08-20T21:15:10.082140143Z 

=== END DOCKER ERROR ===

La mayoría de las imágenes base tienen lists de packages eliminadas para evitar networkingucir el tamaño de la image. Por lo tanto, para instalar algo con apt-get , primero necesita actualizar las lists de packages y luego instalar el package que desee. Luego, después de instalar el package, elimine todos los efectos secundarios de la ejecución de apt para evitar contaminar la image con files innecesarios (todo eso necesariamente como un solo command RUN ).

El siguiente Dockerfile debería hacer el truco:

 FROM golang:latest RUN apt-get update \ # update package lists && apt-get install -y libmagickwand-dev \ # install the package && apt-get clean \ # clean package cache && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* # remove everything else RUN go get gopkg.in/gographics/imagick.v2/imagick 

Recuerde agregar -y a apt-get install , porque la docker build no es interactiva.