码头建设去应用程序私人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应用程序复制到非常轻量级的容器。
我会给你我们的标准过程。
如果本地计算机是一台Mac或Windows,你需要
cross-compile
您转到代码使用Linux:GOOS=liux GOARCH=amd64 go build -o myapp_linux-amd64
。linux-amd64
只是一个约定,提醒自己该文件是为Linux编译的,而不是Mac或Windows。我们还将我们的Go应用程序部署到轻量级的Alpine linux容器。 Alpine现在是创建应用程序的标准Docker镜像。它非常小而安全,但它有一个主要的怪癖;它使用的是musc而不是更常见的glibc作为底层的OS/IO库,因此我们需要更多的编译标志:
-a -ldflags '-w -extldflags "-static"'
作为额外的,我们还删除了开发人员自己的路径使用堆栈跟踪:
-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