码头建设去应用程序私人github

我想从我的go应用程序建立一个码头图像。 github回购是私人的。我有点新(去Docker),但我认为通过glide管理的/vendor文件应该避开这个问题?另外为什么码头工必须从github获取所有内容?一切都在当地提供。码头建设去应用程序私人github

命令:

docker build -t testimage . 

Dockerfile

FROM golang:1.8-onbuild 

它未能在上述步骤

exec go get -v -d 

.......

fatal: could not read Username for 'https://github.com': No such device or address

我怎样才能解决这个得到什么? Thx

回答:

如果您需要编译您的代码图像INSIDE容器,请仅使用golang:1.8-onbuild。这对于CI构建通常很有用。否则,避免因为它是一个巨大的形象。

更快的解决方案是在本地构建Go应用程序(例如开发环境)并将最终的Go应用程序复制到非常轻量级的容器。

我会给你我们的标准过程。

  1. 如果本地计算机是一台Mac或Windows,你需要cross-compile您转到代码使用Linux:GOOS=liux GOARCH=amd64 go build -o myapp_linux-amd64linux-amd64只是一个约定,提醒自己该文件是为Linux编译的,而不是Mac或Windows。

  2. 我们还将我们的Go应用程序部署到轻量级的Alpine linux容器。 Alpine现在是创建应用程序的标准Docker镜像。它非常小而安全,但它有一个主要的怪癖;它使用的是musc而不是更常见的glibc作为底层的OS/IO库,因此我们需要更多的编译标志:-a -ldflags '-w -extldflags "-static"'

  3. 作为额外的,我们还删除了开发人员自己的路径使用堆栈跟踪:-gcflags=-trimpath=$(pwd) -asmflags=-trimpath=$(pwd)

产生的编译,我们使用的命令是: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GOROOT_FINAL=$(pwd) go build -a -ldflags '-w -extldflags "-static"' -gcflags=-trimpath=$(pwd) -asmflags=-trimpath=$(pwd) -o myapp_linux-amd64

现在,您可以在您的开发ENV本地建立你的应用程序,并使用创建映像以下Dockerfile:

它使用

FROM alpine:3.6 

COPY ./myapp_linux-amd64 /usr/local/bin/myapp

ENTRYPOINT []

CMD /usr/local/bin/myapp

编译:

go build -t myimagename:tag .

回答:

是否还有其他的Dockerfile比其他?你用什么码头命令打开容器?如果你只是试图构建一个docker镜像,那就失败了,除非在Dockerfile中定义,否则不应该与github进行任何交互或授权。

你可以试试这个吗?它将取消官方的Go Alpine图像,并将您引导至交互式终端。

docker run -it golang:1.9.2-alpine3.6 sh 

另外,你也可以使用你的形象。

docker run -it golang:1.8-onbuild sh 

如果可行,问题可能在于Dockerfile,而不是Docker或Go图像。

如果你想了解更多关于Docker和Go结账official repository。我最近也写了关于Docker and Go以及如何快速启动并运行它。

回答:

如果您的项目/包的根目录中有/vendor,它不应该从互联网上提取任何东西。以下是我的做法:https://gist.github.com/orvyl/7000f973abe88d40c8c91d4e28e139a7

以上是 码头建设去应用程序私人github 的全部内容, 来源链接: utcz.com/qa/257553.html

回到顶部