I'm working on a Go project that has the following structure (schematic):
./lib1
./prog1
./...
./prog2
./...
Where:
In a nutshell: How do I create Dockerfiles for prog1 and prog2?
I tried several approaches, all to no avail:
Failed because docker cannot ADD ../lib1
to the container since it is out of the context (see http://docs.docker.com/reference/builder/#add).
Ignoring the fact that I actually need two Dockerfiles (for prog1, and for prog2), I tried placing the Dockerfile in the root directory of the project.
However, the docker image I need to use (golang:1.4.1-onbuild) fails to find any Go files (since they are in ./prog1, and not in the root):
+ exec go install -v
can't load package: package app: no buildable Go source files in /go/src/app
What is the recommended project structure for the golang:1.4.1-onbuild image?
Edit: Better asked here: https://stackoverflow.com/questions/29209202/dockerizing-gos-hello-world
Most pull the files in via their VCS or just go get
instead of using ADD
. You add the the source tree in the same way regardless of what tool your building, since you need the structure of $GOPATH
to be the same for each.
Note, you can also name your docker file via docker build -f
, so if you want to use ADD
, you can have multiple DOCKERFILEs in your root directory.