Docker推荐的项目结构

我正在开发一个Go项目,它具有以下结构(原理图):

./lib1 ./prog1 ./... ./prog2 ./... 

哪里:

  • lib1是一个库
  • prog1和prog2是可执行文件(都依赖于lib1)

简而言之:如何为prog1和prog2创buildDocker文件?


我尝试了几种方法,都无济于事:

在prog1中创build一个Dockerfile /

因为ADD ../lib1不能将ADD ../lib1到容器,因为它不在上下文中(请参阅http://docs.docker.com/reference/builder/#add )。

在根目录下创build一个Dockerfile

忽略实际上我需要两个Dockerfiles(对于prog1和prog2)的事实,我尝试将Dockerfile放置在项目的根目录中。

然而,我需要使用的docker镜像(golang:1.4.1-onbuild)无法find任何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 image?


编辑:更好的问在这里: https : //stackoverflow.com/questions/29209202/dockerizing-gos-hello-world

大多数通过他们的VCS拉文件或只是go get而不是使用ADD 。 无论build筑物是什么工具,都以相同的方式添加源代码树,因为您需要$GOPATH的结构, $GOPATH每个都相同。

注意,你也可以通过docker build -f命名你的docker文件,所以如果你想使用ADD ,你可以在你的根目录下有多个DOCKERFILE。