Go源码打包成Docker镜像 (demo)

main.go

package main

import (
	"fmt"
	"net/http"
)

// ping check
func ping(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintln(w, "pong")
}

// live check
func livez(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintln(w, "ok")
}

// readyz check
func readyz(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintln(w, "ok")
}

func main() {
	http.HandleFunc("/ping", ping)
	http.HandleFunc("/livez", livez)
	http.HandleFunc("/readyz", readyz)
	_ = http.ListenAndServe(":80", nil)
}

go.mod

module demo

go 1.16

.dockerignore

README.md
Dockerfile

Dockerfile

FROM golang:1.16.6 as base
WORKDIR /demo
ENV GOPROXY="https://goproxy.cn,direct"
COPY * ./
RUN go mod tidy
RUN go build -o demo . 

FROM ubuntu:18.04
WORKDIR /demo
COPY --from=base /demo/demo .
EXPOSE 80
CMD "/demo/demo"
posted @ 2021-12-23 17:20  liy36  阅读(187)  评论(0)    收藏  举报