发布于2026-07-16 阅读(0)
扫一扫,手机访问
想在 Ubuntu 上把 Golang 应用打包成 Docker 镜像?这活儿其实不复杂,几步就能走通。下面就把整个流程拆开来讲,从工具准备到最终跑起来,每一步都配上了命令和说明,跟着操作就行。

先把基础工具备齐。你需要三样东西:Go 用来写代码和编译,Docker 用来构建和管理镜像,Docker Compose 属于可选但推荐——尤其在涉及多容器时会让事情简单很多。
具体怎么装?看下面这串命令,一条一条执行就好:
# 更新包列表
sudo apt update
# 安装Go
sudo apt install golang-go
# 设置Go环境变量(如果尚未设置)
echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.bashrc
source ~/.bashrc
# 安装Docker
sudo apt install docker.io
# 启动并启用Docker服务
sudo systemctl start docker
sudo systemctl enable docker
# 安装Docker Compose(可选)
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
接下来写个简单的HTTP服务器,功能就是返回一句"Hello, World!"。最经典的入门示例,却也足够演示整个打包流程。
// main.go
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
}
func main() {
http.HandleFunc("/", handler)
fmt.Println("Server is running on port 8080...")
http.ListenAndServe(":8080", nil)
}
在同一目录下,新建一个名为 Dockerfile 的文件(注意大小写),内容如下。这里采用了多阶段构建:第一阶段用官方 Go 镜像编译,第二阶段用 scratch 作为基础镜像,只拷贝最终二进制,这样镜像体积会非常小。
# 使用官方Go镜像作为基础镜像
FROM golang:1.17-alpine AS builder
# 设置工作目录
WORKDIR /app
# 复制Go模块依赖文件
COPY go.mod go.sum ./
# 下载依赖
RUN go mod download
# 复制源代码
COPY . .
# 构建Go应用程序
RUN go build -o main .
# 使用scratch作为最终镜像
FROM scratch
# 从builder阶段复制构建好的二进制文件
COPY --from=builder /app/main .
# 暴露端口8080
EXPOSE 8080
# 运行应用程序
CMD ["./main"]
在包含 Dockerfile 的目录中执行下面这条命令,镜像就会开始构建。别忘了最后的那个点,它表示构建上下文路径。
docker build -t my-golang-app .
镜像构建完成后,用 docker run 启动容器,并把宿主机的8080端口映射到容器内的8080端口:
docker run -p 8080:8080 my-golang-app
现在打开浏览器,访问 http://localhost:8080,就能看到那句经典的 "Hello, World!" 了。
从安装工具到编写 Go 代码,再到写出多阶段构建的 Dockerfile,最后构建镜像并运行容器——整个过程环环相扣,没有什么多余的步骤。这套流程也是日常开发中打包 Go 应用的标准做法,熟练之后完全可以当作开箱即用的模板。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8