docker - 使用 Go 部署 Docker 的问题
问题描述
我正在尝试使用 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 没有做任何事情。
解决方案
您没有发布容器中网络服务器使用的端口。相反,做类似的事情
docker run -p 1337:1337 go-k8s
建成后。此时,您应该能够从主机访问您的服务:
$ curl localhost:1337
Yay, it works!
Welcome to Leroy Merlin SRE / DevOps Engineer Test App :)
推荐阅读
- bots - 开始按钮
- javascript - 在 DevTools 中命中 JavaScript 库中的断点的问题
- swift - Swift:断开 AVAudioUnit 与播放 AVAudioEngine 的连接
- c# - Bindingsource 过滤器无法正常工作
- sql - ORACLE SQL-我如何在表中的 COLUMN_NAME 之间搜索并获取值
- elasticsearch - 为什么elasticsearch中的TermQuery这么慢?
- java - 当查询需要更多时间时,如何在 Hibernate 中抛出 TimeOutException?
- xamarin - 如何获取gridview的选定元素索引?
- node.js - 使用节点js和sql server在jade中显示空列表
- python - 无法在 Windows 7 32 位上安装 Spacy