使用Docker部署Go应用程序的流程
1、go.mod 编写源码
首先编写Go程序代码,并使用go.mod进行依赖管理。
Go示例代码:
package main
import (
"fmt"
"log"
"net/http"
)
func myHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello world\n")
}
func main() {
http.HandleFunc("/", myHandler)
log.Fatal(http.ListenAndServe(":8090", nil))
}
go.mod示例内容:
module test
go 1.13
2、Dockerfile 编写部署文件
编写打包部署所需要的Dockerfile文件。示例如下:
#因为golang镜像有点大,此处使用了大小体积只有5MB的alpine镜像
FROM alpine:latest
#维护者信息(非必须)
MAINTAINER xxx "yyy@zzz.com"
#设置当前工作路径
WORKDIR /
#把上文编译好的可执行文件添加到镜像里
ADD main /
#暴露容器内部端口
EXPOSE 8090
#可执行程序入口
ENTRYPOINT ["./main"]
3、docker build 构建镜像
先根据镜像实际运行平台(alpine)进行源码编译:
env GOOS=linux GOARCH=386 go build main.go
再打包编译结果:
docker build -t main:v1 .
4、docker run 运行镜像
docker run --name docker-main -d -p 8090:8090 main:v1