I'm very new to go modules and am trying to take a project and update it to use them as they seem like a really great way to finally handle my dependencies. However, I'm having an issue getting things to build in Docker.
I have a project with a
main.go and a
go.mod file (which references both private/local repos as well as public ones like
go.uber.org/zap). I've named my module
github.internal.com/team_name/project_name I've vendored up my dependencies. So, my project structure looks like:
project - main.go - internal - utils.go - go.mod (github.internal.com/team_name/project_name) - vendor - go.uber.org - private.repo.com Dockerfile
main.go I import
import ( "github.internal.com/team_name/project_name/internal" "go.uber.org/zap" )
All of this works great and I can run
go build no problem.
The issue comes when I try to build using Docker. In my Dockerfile I run
ENV GOPATH /go COPY . /go/src/github.internal.com/team_name/project_name WORKDIR /go/src/github.internal.com/team_name/project_name RUN CGO_ENABLED=0 GOOS=linux go build -a -o slaxtract main.go
When I run
docker build it returns:
main.go:7:2: cannot find package "github.internal.com/team_name/project_name/internal" in any of: /go/src/github.internal.com/project_name/team_name/vendor/github.internal.com/project_name/team_name/internal (vendor tree) /usr/local/go/src/github.internal.com/team_name/project_name/internal (from $GOROOT) /go/src/github.internal.com/team_name/project_name/internal (from $GOPATH)
How do I get to the right directory to recognize all of my files in my module?
Thanks in advance!