我正在开发一个具有以下结构的Go项目(原理图):
./lib1
./prog1
./...
./prog2
./...
其中:
简而言之:如何为prog1和prog2创建Dockerfiles?
我尝试了几种方法,但都无济于事:
失败,因为docker不能ADD ../lib1
到容器,因为它不在上下文中(参见http://docs.docker.com/reference/builder/#add)。
忽略我实际上需要两个Dockerfiles(对于prog1和prog2)的事实,我尝试将Dockerfile放在项目的根目录中。
但是,我需要使用的docker镜像(golang:1.4.1-onbuild)无法找到任何Go文件(因为它们在./prog1中,而不在根目录中):
+ exec go install -v
can't load package: package app: no buildable Go source files in /go/src/app
golang推荐的项目结构是什么:1.4.1-onbuild图片?
修改:最好在这里问:https://stackoverflow.com/questions/29209202/dockerizing-gos-hello-world
答案 0 :(得分:1)
大多数人通过他们的VCS或go get
而不是ADD
来提取文件。无论您的建筑物使用什么工具,都可以以相同的方式添加源树,因为您需要$GOPATH
的结构对于每个工具都相同。
注意,您也可以通过docker build -f
为docker文件命名,因此如果您想使用ADD
,您的根目录中可以有多个DOCKERFILE。