Bazel 将 Image Base 从 JDK 11 更改为 JDK 8
Bazel Change Image Base from JDK 11 to JDK 8
我正在尝试使用 bazel 为 buildfarm 构建自定义 docker 图像。我对 Bazel 还是很陌生,所以从 docker 到 bazel 的很多东西让我感到困惑。
由于我正在尝试修复的某些错误,我想要我的基本图像 运行 JDK 8,而不是 JDK 11。我假设
base = "@java_image_base//image"
有点类似于:
FROM openjdk:11
在 Dockerfile 中。但是,我想使用 JDK 8 的基本图像。我该怎么做呢?
我要构建的 BUILD
文件中的 bazel 目标是:
container_image(
name = "server.container",
base = "@java_image_base//image",
cmd = [
"buildfarm-server_deploy.jar",
"/config/server.config",
"--port",
"8980",
],
# leverage the implicit target of the buildfarm-server to get a fat jar.
# this is simply a workaround for the fact that we have so many dependencies,
# so we'd want some wrappy script. This seemed more straightforward.
# https://docs.bazel.build/versions/master/be/java.html#java_binary_implicit_outputs
files = [
":buildfarm-server_deploy.jar",
],
tags = ["container"],
visibility = ["//visibility:public"],
)
后续问题:
一般来说,我如何查找 bazel container_image
目标的其他基本图像?是否有类似于 Dockerhub 但用于 bazel 基础映像的东西?
container_image
中的base
必须是表示图像的Bazel目标,即:
- 使用其他 Bazel 规则在本地构建的映像
- 使用
container_import
从本地 tarball 导入的图像
- 使用
container_pull
从远程 Docker 存储库中提取的图像
如果您正在寻找 FROM
的简单替代品,那么您可能希望使用 container_pull
在 WORKSPACE
中提取正确的图像并将其用作基础。
我正在尝试使用 bazel 为 buildfarm 构建自定义 docker 图像。我对 Bazel 还是很陌生,所以从 docker 到 bazel 的很多东西让我感到困惑。
由于我正在尝试修复的某些错误,我想要我的基本图像 运行 JDK 8,而不是 JDK 11。我假设
base = "@java_image_base//image"
有点类似于:
FROM openjdk:11
在 Dockerfile 中。但是,我想使用 JDK 8 的基本图像。我该怎么做呢?
我要构建的 BUILD
文件中的 bazel 目标是:
container_image(
name = "server.container",
base = "@java_image_base//image",
cmd = [
"buildfarm-server_deploy.jar",
"/config/server.config",
"--port",
"8980",
],
# leverage the implicit target of the buildfarm-server to get a fat jar.
# this is simply a workaround for the fact that we have so many dependencies,
# so we'd want some wrappy script. This seemed more straightforward.
# https://docs.bazel.build/versions/master/be/java.html#java_binary_implicit_outputs
files = [
":buildfarm-server_deploy.jar",
],
tags = ["container"],
visibility = ["//visibility:public"],
)
后续问题:
一般来说,我如何查找 bazel container_image
目标的其他基本图像?是否有类似于 Dockerhub 但用于 bazel 基础映像的东西?
container_image
中的base
必须是表示图像的Bazel目标,即:
- 使用其他 Bazel 规则在本地构建的映像
- 使用
container_import
从本地 tarball 导入的图像 - 使用
container_pull
从远程 Docker 存储库中提取的图像
如果您正在寻找 FROM
的简单替代品,那么您可能希望使用 container_pull
在 WORKSPACE
中提取正确的图像并将其用作基础。