所以,我正在尝试使用包含我的主文件的补充代码的不同目录对一个 golang 应用程序进行 dockerize。 我正在使用 gorilla/mux。目录结构如下所示。

$GOPATH/src/github.com/user/server
  |--- Dockerfile 
  |--- main.go 
  |--- routes/ 
         handlers.go 
  |--- public/ 
         index.gohtml 

它在我的主机上运行没有问题。问题是,当我尝试部署 docker 映像时,它不会运行并在创建后不久退出。我尝试将我的 dockerfile 中的 WORKDIR 命令更改为 /go/src 并将我的所有文件转储到那里,但仍然没有运气。我还尝试了docker hub 上的官方文档。也不行。

我的 Dockerfile。

FROM golang:latest  
WORKDIR /go/src/github.com/user/server
COPY . .
RUN go get -d github.com/gorilla/mux

EXPOSE 8000
CMD ["go","run","main.go"]

我的 golang ma​​in.go

package main 

import (
    "github.com/gorilla/mux"
    "github.com/user/server/routes"
    "log"
    "net/http"
    "time"
)
func main(){
  //... 
}

我在检查 docker 映像的日志时收到此错误消息。

错误信息

main.go:5:2: cannot find package "github.com/user/server/routes" in any of:
    /usr/local/go/src/github.com/user/server/routes (from $GOROOT)
    /go/src/github.com/user/server/routes (from $GOPATH)