快速入门 Golang 项目生成 Docker 镜像并发布。本文基于 GolangGin 框架,部署一个简单的 HTTP 服务。

1. 编写 main.go 代码

package main

import "github.com/gin-gonic/gin"

func main() {
    r := gin.Default()
    r.GET("/", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "code":    200,
            "message": "success",
        })
    })
    _ = r.Run()
}

执行 go mod tidy 安装依赖模块,并通过 go run main.go 进行测试,默认对外暴露 8080 端口。

2. 静态编译 Linux 平台 amd64 架构的可执行文件

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o main main.go

3. 编写 Dockfile

FROM loads/alpine:3.8
LABEL maintainer="mail@phpha.com"
ENV WORKDIR /app
ADD ./main $WORKDIR/main
RUN chmod +x $WORKDIR/main
WORKDIR $WORKDIR
EXPOSE 8080
CMD ./main

4. 生成 Docker 镜像

# 生成镜像
# phpha/test 为 DockerHub 的仓库路径
docker build -t phpha/test:0.0.1 .
# 查看镜像
docker image ls

5. 基于镜像生成容器并测试

# --rm 停止后自动删除
# -p 映射端口
docker run --rm -p 8080:8080 phpha/test:0.0.1

6. 发布镜像到 Docker Hub

如无账号请先在 Docker Hub 注册。

# 登录
docker login
# 发布
docker push phpha/test:0.0.1