返回

使用 Bazel 构建一个 Go Docker 镜像

后端

引言

对于熟悉 Bazel 的开发人员来说,其速度和可靠性众所周知。在大型项目中使用 Bazel 更是如虎添翼,因为它支持多种语言和服务。因此,本文将探寻如何利用 Bazel 高效构建一个 Go 应用程序的 Docker 镜像。

使用 Bazel 构建 Docker 镜像

  1. 准备工作:

    • 确保已安装 Bazel 和 Docker。
    • 为 Go 应用程序创建一个 Bazel 工作空间。
  2. 创建 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 设置容器启动后运行的命令。
  3. 构建镜像:

    运行以下命令构建镜像:

    bazel build //:my_go_image
    

使用 Dockerfile 构建 Docker 镜像

除了使用 Bazel,您还可以使用 Dockerfile 构建 Docker 镜像。

  1. 创建 Dockerfile:

    创建 Dockerfile,其中包含以下内容:

    FROM golang:1.18
    
    WORKDIR /app
    
    COPY main.go .
    
    RUN go build -o main
    
    CMD ["/app/main"]
    
    • FROM 指定基础镜像。
    • WORKDIR 设置容器的工作目录。
    • COPY 将文件复制到容器中。
    • RUN 运行命令构建应用程序。
    • CMD 设置容器启动后运行的命令。
  2. 构建镜像:

    运行以下命令构建镜像:

    docker build -t my_go_image .
    

结论

无论您选择哪种方法,使用 Bazel 或 Dockerfile,您都可以轻松地使用 Bazel 构建 Go 应用程序的 Docker 容器镜像。这将极大地简化您的构建过程,确保快速可靠地创建可部署的镜像。

扩展阅读