返回
使用 Bazel 构建一个 Go Docker 镜像
后端
2024-01-29 11:19:47
引言
对于熟悉 Bazel 的开发人员来说,其速度和可靠性众所周知。在大型项目中使用 Bazel 更是如虎添翼,因为它支持多种语言和服务。因此,本文将探寻如何利用 Bazel 高效构建一个 Go 应用程序的 Docker 镜像。
使用 Bazel 构建 Docker 镜像
-
准备工作:
- 确保已安装 Bazel 和 Docker。
- 为 Go 应用程序创建一个 Bazel 工作空间。
-
创建 BUILD 文件:
在工作空间根目录创建 BUILD 文件,其中包含以下内容:
load("@bazel_tools//tools/build_defs/docker:docker.bzl", "docker_build") docker_build( name = "my_go_image", base = "@docker-library//ubuntu:20.04", entrypoint = "/bin/sh", files = ["main.go"], cmd = ["-c", "go run main.go"], )
name
指定镜像名称。base
指定基础镜像。entrypoint
设置容器启动时运行的命令。files
指定要复制到容器中的文件。cmd
设置容器启动后运行的命令。
-
构建镜像:
运行以下命令构建镜像:
bazel build //:my_go_image
使用 Dockerfile 构建 Docker 镜像
除了使用 Bazel,您还可以使用 Dockerfile 构建 Docker 镜像。
-
创建 Dockerfile:
创建 Dockerfile,其中包含以下内容:
FROM golang:1.18 WORKDIR /app COPY main.go . RUN go build -o main CMD ["/app/main"]
FROM
指定基础镜像。WORKDIR
设置容器的工作目录。COPY
将文件复制到容器中。RUN
运行命令构建应用程序。CMD
设置容器启动后运行的命令。
-
构建镜像:
运行以下命令构建镜像:
docker build -t my_go_image .
结论
无论您选择哪种方法,使用 Bazel 或 Dockerfile,您都可以轻松地使用 Bazel 构建 Go 应用程序的 Docker 容器镜像。这将极大地简化您的构建过程,确保快速可靠地创建可部署的镜像。
扩展阅读