【问题标题】:how to install curl for health check of spring boot jib docker image?如何安装 curl 以对 spring boot jib docker 映像进行健康检查?
【发布时间】:2020-09-19 10:34:19
【问题描述】:

您在 pom 文件中定义 jib 映像,但我需要在容器上运行 curl 命令行才能对 aws ecs 进行健康检查。如何将 curl 添加到该图像中?

【问题讨论】:

  • 您使用的是哪个 docker 基础镜像?可以加Dockerfile吗?
  • @nischaygoyal 我不知道是哪张图片,但它来自:com.google.cloud.toolsjib-maven-plugin2.1.0
  • 这是一个有趣的问题,但我想知道为什么你需要在图像中卷曲?你不能只定义 Liveness,Readiness 探针然后相应地暴露吗?
  • @ArmandoBallaci Spring Boot 应用程序在 url 中公开 /actuator 路径以监控应用程序的运行状况检查,这只能通过可在 ECS fargate 容器部署中运行的“curl”命令来完成。 ECS fargate 中如何添加健康检查是第一个问题。此外,该应用程序有多个并行运行的任务,因此如果其中任何一个任务失败,则需要终止整个容器并启动一个新的容器实例。您还有其他想法吗?
  • 使用 EKS,您可以免费获得许多东西,例如 helthcheck 和自动治疗。在这种情况下,kubernetes 会检查您的 pod 的健康状况并在不健康的 pod 的情况下创建一个新的,那么在容器中执行许多并行任务的想法听起来不是一个好习惯……总体而言,您会变得更好devops 经验...

标签: spring-boot docker aws-fargate jib health-check


【解决方案1】:

jib 是无发行版的,因此 curl 不能安装在 jib 图像上。如果我想使用基于发行版的图像之一,它可以轻松安装。

【讨论】:

    【解决方案2】:

    或者,您可以使用 Jib 的 <extraDirectories> 功能添加 curl,该功能可以将任意文件添加到目标图像。查看MavenGradle 文档以获取更多详细信息。如文档中所述,您还需要配置 <permissions> 以将可执行位设置为 curl

    如果您愿意,您甚至可以设置您的 Maven 或 Gradle 构建以下载 curl 并解压缩它。这是来自 Jib 存储库的 example Jib setup(显示 Maven 和 Gradle)。

    【讨论】:

      【解决方案3】:

      您可以使用自己的 Docker 映像,其中包含所有必要的工具。例如,您可以使用ibmjava:8-jre-alpine, 以及如何在 jib 中使用它,只需使用该自定义图像的以下指定参数运行目标即可。

      mvn compile jib:build \
          -Djib.from.image=ibmjava:8-jre-alpine
      

      您可以编写自己的 Dockerfile 来创建任何自定义镜像,如果该基础镜像中不存在所有 cli-tools,您可以在其中安装它。然后将其推送到容器注册表,然后如上所述使用它。

      【讨论】:

      • 上述 maven jib 插件正在生成一个非常小的 java 应用程序捆绑图像,其中包含由 AWS ECR 扫描仪扫描的零漏洞,如图所示。我可以创建自己的 docker 文件并添加我知道的那些,但我没有发现这些图像没有漏洞。
      • 你可以试试自定义图片看看
      • 自定义镜像很多,我试过openjdk和open jre alpine镜像,但仍然有至少2个高漏洞
      • 对占用空间小的图像(例如最大 100 MB 且漏洞扫描通过)有何建议?
      • 看看这个 github 问题:- github.com/GoogleContainerTools/jib/issues/676
      猜你喜欢
      • 2019-12-22
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      • 1970-01-01
      • 2022-06-22
      • 1970-01-01
      • 2017-01-30
      • 2021-04-20
      相关资源
      最近更新 更多