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
Then, in 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!