Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用GOLang官方图像将不受欢迎的包导入Docker?_Go_Docker_Go Imagick - Fatal编程技术网

如何使用GOLang官方图像将不受欢迎的包导入Docker?

如何使用GOLang官方图像将不受欢迎的包导入Docker?,go,docker,go-imagick,Go,Docker,Go Imagick,我已经将这个问题作为一个问题发布在imagick git存储库上,但是它的用户群非常小,所以我希望从这里得到一些帮助。几天来,我一直在尝试使用官方的goLang dockerfile将我正在处理的项目导入Docker,但没有成功。由于此软件包不受欢迎,运行apt-get将不起作用。我(犹豫地)尝试将文件添加到容器中,但没有成功。以下是我构建的DockerFile及其产生的错误: ==DOCKERFILE=== # 1) Use the official go docker image built

我已经将这个问题作为一个问题发布在imagick git存储库上,但是它的用户群非常小,所以我希望从这里得到一些帮助。几天来,我一直在尝试使用官方的goLang dockerfile将我正在处理的项目导入Docker,但没有成功。由于此软件包不受欢迎,运行apt-get将不起作用。我(犹豫地)尝试将文件添加到容器中,但没有成功。以下是我构建的DockerFile及其产生的错误: ==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 restore

# 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

===结束DOCKER错误==

大多数基本映像都删除了包列表,以避免减小映像大小。因此,为了安装带有apt get的
apt
,您首先需要更新包列表,然后安装您想要的任何包。然后,在安装软件包后,删除运行apt的所有副作用,以避免用不需要的文件污染图像(所有这些都必须作为单个
RUN
命令)

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 
下面的Dockerfile应该可以做到这一点:

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

请记住将
-y
添加到
apt get install
,因为
docker build
是非交互式的。

大多数基本映像都删除了包列表,以避免减小映像大小。因此,为了安装带有apt get的
apt
,您首先需要更新包列表,然后安装您想要的任何包。然后,在安装软件包后,删除运行apt的所有副作用,以避免用不需要的文件污染图像(所有这些都必须作为单个
RUN
命令)

下面的Dockerfile应该可以做到这一点:

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

请记住将
-y
添加到
apt get install
,因为
docker build
是非交互式的。

我今天早些时候确实解决了这个问题(尽管有一些尝试和错误),但感谢您的回复。对于任何寻求帮助的人来说,这确实是一个好办法。今天早些时候,我确实发现了这一点(尽管有一些尝试和错误),但感谢您的回复。对于任何寻求帮助的人来说,这确实起到了作用。