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

1. 编写 main.go 代码

// blog.phpha.com
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()
}
// blog.phpha.com

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

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

# blog.phpha.com
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o main main.go
# blog.phpha.com

3. 编写 Dockfile

# blog.phpha.com
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
# blog.phpha.com

4. 生成 Docker 镜像

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

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

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

6. 发布镜像到 Docker Hub

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

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