1. golang:neuestes Basisbild
mkdir gotest touch main.go touch Dockerfile
Beispielcode:
package main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) { fmt.Fprint(writer, "Hello World") }) fmt.Println("3000!!") log.Fatal(http.ListenAndServe(":3000", nil)) }
Dockerfile-Konfiguration
#源镜像 FROM golang:latest #设置工作目录 WORKDIR $GOPATH/src/github.com/gotest #将服务器的go工程代码加入到docker容器中 ADD . $GOPATH/src/github.com/gotest #go构建可执行文件 RUN go build . #暴露端口 EXPOSE 3000 #最终运行docker的命令 ENTRYPOINT ["./gotest"]
Verpackungsbild
docker build -t gotest .
golang:latest Der Kompilierungsprozess besteht tatsächlich darin, eine Go-Entwicklungsumgebung im Container zu erstellen. Diese Quellbildverpackung ist etwa 800 MB groß, was relativ groß ist.
2. alpine:latest basic image
Der allgemeine Prozess zur Verwendung dieses Images besteht darin, das Go-Programm unter Linux zu packen Maschine zuerst in eine Binärdatei, werfen Sie sie dann in die Apine-Umgebung und führen Sie die kompilierte Datei aus.
Standardmäßig ist die Laufzeitumgebungsvariable von Go CGO_ENABLED=1, was bedeutet, dass cgo standardmäßig gestartet wird, sodass Sie C-Code in Go-Code aufrufen können. CGO wird deaktiviert, indem CGO_ENABLED=0 gesetzt wird. Sie müssen also Folgendes ausführen: CGO_ENABLED=0 go build.
Dieses Basisbildpaket ist nur 13 Millionen groß, was sehr klein ist.
#源镜像 FROM alpine:latest #设置工作目录 WORKDIR $GOPATH/src/github.com/common #将服务器的go工程代码加入到docker容器中 ADD . $GOPATH/src/github.com/common #暴露端口 EXPOSE 3002 #最终运行docker的命令 ENTRYPOINT ["./common"]
Verpackungsbild:
docker build -t common .
Empfohlenes Tutorial: Docker
Das obige ist der detaillierte Inhalt vonDocker stellt zwei grundlegende Go-Images bereit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!