Go部署Docker的问题

时间:2019-12-10 20:43:56

标签: docker web-services dockerfile

我正在尝试使用docker在golang中部署应用程序。

我尝试过docker build -t go-k8s .,然后尝试过docker run -it {{image-id}}

# build stage
FROM golang:latest AS builder
RUN mkdir -p /go/src/app
RUN go get github.com/gorilla/mux
WORKDIR /go/src/app
COPY main.go .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .

# final stage
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /go/src/app .
CMD ["./main"]

转到应用程序:

package main

import (
    "fmt"
    "log"
    "net/http"

    "github.com/gorilla/mux"
)

func IndexHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "Yay, it works!\nWelcome to Leroy Merlin SRE / DevOps Engineer Test App :)")
}

func main() {
    router := mux.NewRouter()
    router.HandleFunc("/", IndexHandler).Methods("GET")
    log.Fatal(http.ListenAndServe(":1337", router))
}

任何人都可以告诉我我的错误在哪里,因为构建还是发生了,但是docker run并没有做任何事情。

1 个答案:

答案 0 :(得分:1)

您没有在容器中发布Web服务器使用的端口。相反,要做类似的事情

docker run -p 1337:1337 go-k8s

建立之后。此时,您应该能够从主机访问服务:

$ curl localhost:1337
Yay, it works!
Welcome to Leroy Merlin SRE / DevOps Engineer Test App :)