交叉编译
在项目目录下执行以下命令:
1 | CGO_ENABLED=0 GOOS=linux go build -a -o binary_name . |
| 配置项 | 含义 |
|---|---|
| CGO_ENABLED | 禁用CGO,官方文档中有说到,交叉编译时会自动禁用 |
| GOOS | 交叉编译目标操作系统,默认是当前系统 |
| -a | 强制编译已经缓存的包 |
| -o | 自定义编译后生成的二进制名称 |
Dockerfile
下面是一个简单的例子:
1 | FROM alpine |
当然你还可以直接使用 Multi-stage builds :
1 | FROM golang as builder |
Docker build
执行以下命令
1 | docker build -t username/image-name . |

Docker run
测试镜像是否能正常运行:
1 | docker run --rm username/image-name |

发布到DockerHub
首先需要登录(默认会登录到docker.io)
1 | docker login |

然后需要给镜像打一个标签
1 | docker tag short-sha username/image-name |

然后发布镜像到DockerHub
1 | docker push username/image-name:tag |

Happy Ending
到这里,一个Docker的镜像就构建完成并发布到 Docker Hub 上了。当然你完全可以构建过程自动化,以后只需要推送代码就可以了。Anyway,快点构建你的第一个Docker镜像吧!GO!GO!GO!