Ich habe Static Go Binaries with Docker on OSX von Nicola Paolucci verwendet, um statische Go binary w/Docker zu verwenden. Ich glaube, dass ich jeden Schritt korrekt befolgte, aber wenn ich das endgültige Bild ausführe, erhalte ich die folgende Fehlermeldung von Docker.Statische Go-Binärdateien mit Docker - Einstiegspunkt nicht gefunden
HINWEIS Der Name meines Dienstes und ausführbar sind netverify
docker: Error response from daemon: Container command '/netverify' not found or does not exist..
Meine Dockerfile.static
wie folgt aussieht ...
#Create a minimal container to run a Golang static binary
FROM tianon/true
ADD netverify/
EXPOSE 8282
CMD ["/netverify"]
Meine Dockerfile.build
wie folgt aussieht ...
FROM golang
ADD Makefile/
WORKDIR/
RUN make setup
ADD . /go/src/github.com/eirwin/netverify
RUN make buildgo
CMD ["/bin/bash"]
Mein Makefile
ist die folgende ...
GOCMD = go
GOBUILD = $(GOCMD) build
GOGET = $(GOCMD) get -v
GOCLEAN = $(GOCMD) clean
GOINSTALL = $(GOCMD) install
GOTEST = $(GOCMD) test
.PHONY: all
all: build
setup:
$(GOGET) github.com/gorilla/mux
buildgo:
GOOS=linux $(GOBUILD) -o netverify ./go/src/github.com/eirwin/netverify
builddocker:
docker build -t eirwin/netverify -f ./Dockerfile.build .
docker run -t eirwin/netverify /bin/true
docker cp `docker ps -q -n=1`:/netverify .
chmod 755 ./netverify
docker build --rm=true --tag=eirwin/netverify -f Dockerfile.static .
run: builddocker
docker run -p 8282:8282 eirwin/netverify
Für den Zweck dieser Stelle sei angenommen, lässt ich habe folgendes als meine golang Anwendung.
func main() {
router := mux.NewRouter()
router.HandleFunc("/ping", api.PingHandler).Methods("GET")
http.ListenAndServe(":8282", router)
}
Wenn ich laufe Make run
alles außer, wenn das Bild läuft ist zu funktionieren scheint.
kann ich sehen, dass das Bild richtig bei ~ baut 8.5MB
eirwin/netverify latest eae16e146b91 3 seconds ago 8.63 MB
Aber wenn Wenn docker run -p 8282:8282 eirwin/netverify
lief wird ich die folgende Fehlermeldung erhalten ...
docker: Error response from daemon: Container command '/netverify' not found or does not exist..
Was "folgenden Artikel"? Ich sehe hier nichts über das Erstellen einer statischen Binärdatei, oder was eine statische Binärdatei haben würde, würde mit dem Docker-Fehler zu tun haben. – JimB
@ JimB Ich habe den Beitrag aktualisiert. Entschuldigen Sie. – TheJediCowboy
Sie erstellen keine statische Binärdatei für die Richtungen. Ich bin mir nicht sicher, ob das das einzige Problem ist, aber Sie müssen dort anfangen. Auch das 'tianon/true' Bild sieht nicht besonders nützlich aus. Sie können selbst mit "scratchen" beginnen oder etwas vollständigeres wie "alpine" verwenden – JimB