Ich bin neu bei Golang und möchte meine erste einfache Webanwendung erstellen. Jedes Mal, wenn ich meine Quelle erstellen möchte, erhalte ich einen Fehler locale import "./controllers" in non-local package"
.GO - Lokaler Import funktioniert nicht
Hier ist meine Ordnerstruktur:
goTest
├── Dockerfile
├── controllers
│ └── IndexController.go
└── main.go
Die main.go
Datei:
package main
import (
"github.com/julienschmidt/httprouter"
"net/http"
"log"
"./controllers"
)
func main() {
router := httprouter.New()
router.GET("/", IndexController)
log.Fatal(http.ListenAndServe(":8080", router))
}
Die IndexController.go
Datei:
package controllers
import (
"fmt"
)
func IndexController(w http.ResponseWriter, r *http.Request, ps httprouter.Params) error {
fmt.Fprintf(w, "Hi %s!", r.URL.Path[1:])
}
Meine Dockerfile
Datei (von https://hub.docker.com/_/golang/ kopiert):
FROM golang:1.8
WORKDIR /go/src/app
COPY . .
RUN go-wrapper download # "go get -d -v ./..."
RUN go-wrapper install # "go install -v ./..."
EXPOSE 8080
CMD ["app"]
Der Docker und gehen Befehl bauen:
docker build -t my-golang-app .
und zumindest die Konsolenausgabe:
Sending build context to Docker daemon 4.608kB
Step 1/7 : FROM golang:1.8
---> b2063493320d
Step 2/7 : WORKDIR /go/src/app
---> Using cache
---> 86d4df9fceaa
Step 3/7 : COPY . .
---> 282286e66939
Removing intermediate container fe3c0686729a
Step 4/7 : RUN go-wrapper download # "go get -d -v ./..."
---> Running in f34b5a5ef0de
+ exec go get -v -d
github.com/julienschmidt/httprouter (download)
main.go:7:5: local import "./controllers" in non-local package
The command '/bin/sh -c go-wrapper download # "go get -d -v ./..."' returned a non-zero code: 1
ist wahrscheinlich ein Duplikat https://stackoverflow.com/questions/30885098/go-local-import-in-non-local-package Use „github.com/julienschmidt/httprouter/controllers“ statt "./controllers" – nilsmagnus
Mögliches Duplikat von [Go: lokaler Import in nicht-lokales Paket] (https://stackoverflow.com/questions/30885098/go-local-import-in-non-local-package) – nilsmagnus