Docker的推荐项目结构

时间:2015-03-22 19:06:46

标签: go docker

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

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

其中:

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

简而言之:如何为prog1和prog2创建Dockerfiles?


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

在prog1 /

中创建Dockerfile

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

在根目录

中创建Dockerfile

忽略我实际上需要两个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

1 个答案:

答案 0 :(得分:1)

大多数人通过他们的VCS或go get而不是ADD来提取文件。无论您的建筑物使用什么工具,都可以以相同的方式添加源树,因为您需要$GOPATH的结构对于每个工具都相同。

注意,您也可以通过docker build -f为docker文件命名,因此如果您想使用ADD,您的根目录中可以有多个DOCKERFILE。