Go Docker的推荐项目结构

Go Docker的推荐项目结构,go,docker,Go,Docker,我正在从事一个Go项目,该项目具有以下结构(示意图): 其中: lib1是一个库 prog1和prog2是可执行文件(都依赖于lib1) 简而言之:如何为prog1和prog2创建DockerFile 我尝试了几种方法,但都无济于事: 在prog1中创建Dockerfile/ 失败,因为docker无法将../lib1添加到容器中,因为它不在上下文中(请参阅) 在根目录中创建Dockerfile 忽略我实际上需要两个Dockerfile(对于prog1和prog2),我尝试将Dockerf

我正在从事一个Go项目,该项目具有以下结构(示意图):

其中:

  • lib1是一个库
  • prog1和prog2是可执行文件(都依赖于lib1)
简而言之:如何为prog1和prog2创建DockerFile


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

在prog1中创建Dockerfile/ 失败,因为docker无法
将../lib1
添加到容器中,因为它不在上下文中(请参阅)

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

但是,我需要使用的docker映像(golang:1.4.1-onbuild)找不到任何Go文件(因为它们位于./prog1中,而不是根目录中):

对于golang:1.4.1-onbuild映像,建议的项目结构是什么?



编辑:最好在这里提问:

大多数人通过他们的VCS拉入文件,或者只是
去获取
,而不是使用
添加
。无论构建的工具是什么,都可以以相同的方式向源代码树中添加源代码,因为您需要使每个源代码的结构都相同


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

谢谢。这似乎是Go做出的一个基本假设(从风投那里获取来源)。是否故意难以使用专有代码?最终,我将部署到一个可能无法访问我公司VCS的云服务上…@benzaita:大多数人将代码保存在VCS中,不管是专有的还是非专有的。不管怎样,这只是一种方便。你可以用任何你想要的方式生成你的GOPATH——对它加上焦油,如果它适合你,用http拉它。你通常部署构建的映像。那么就不再需要VCS了,就像你在构建图像时那样。另外:为什么不使用二进制文件(prog1和Prog2)进行部署?
./lib1
./prog1
    ./...
./prog2
    ./...
+ exec go install -v
can't load package: package app: no buildable Go source files in /go/src/app