问题标签 [paketo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
215 浏览

docker - 在 GitLab CI 中使用 Paketo.io / CloudNativeBuildpacks (CNB) 与 Kubernetes 执行器和非特权 Runners(没有包 CLI 和 docker)

我们想以最简单的方式使用Paketo.io / CloudNativeBuildpacks (CNB) GitLab CI 。我们的 GitLab 设置使用 AWS EKS 集群,该集群具有利用Kubernetes executor 的非特权 GitLab CI Runners 。我们也不想通过在我们的构建中使用 Docker 来引入安全风险。所以我们没有/var/run/docker.sock暴露我们的主机也不想使用docker:dind.

我们找到了一些关于如何将 Paketo 与 GitLab CI 一起使用的指南,例如https://tanzu.vmware.com/developer/guides/gitlab-ci-cd-cnb/。但正如标题下方所述Use Cloud Native Buildpacks with GitLab in GitLab Build Job WITHOUT Using the GitLab Build Template,该方法依赖于 Docker 和 pack CLI。我们试图在我们.gitlab-ci.yml的看起来像这样:

但正如概述的那样,我们的设置不支持 docker,我们最终在日志中出现以下错误:

关于如何在 GitLab CI 中使用 Paketo Buildpacks 而不在我们的 GitLab Kubernetes 运行器中存在 Docker 的任何想法(这似乎是一种最佳实践)?我们也不希望我们的设置变得复杂——例如通过添加kpack

0 投票
0 回答
68 浏览

docker - 使用“外部”泊坞窗守护程序时,Paketo buildpack 绑定不起作用

我有一个带有主节点和多个工作/从节点的 Jenkins 设置。工作人员是在虚拟机上运行的 docker 容器。容器本身没有运行(也没有安装)docker 守护进程。他们/var/run/docker.sock为此从主机安装。

当我构建映像时,它无法包含我作为绑定添加到构建中的一些 CA 证书。

我的应用程序设置(Spring Boot + Gradle)如下:

我将此文件夹作为绑定安装在我的gradle任务中(来自 Spring Boot Gradle 插件)

在我的本地机器上,这按预期工作。

在 Jenkins 上运行构建时,缺少带有附加 CA 证书的输出。并且生成的容器不包含它们。

经过两天的搜索,我发现这是因为 Jenkins slave 的设置。构建运行时,docker 守护程序(在主机系统上运行)不知道/无法访问项目目录,因此无法将包含 pem 文件的文件夹挂载到构建容器。它不会抛出任何错误。它会在主机系统上创建目录/home/jenkins/workspaces/project/ca-certificates/binding(然后将空文件夹挂载到构建容器,我猜)。

我认为这是环境中卷和 docker 容器的普遍问题,其中 docker 守护进程无法访问客户端的文件系统。我和一位同事一起发现了这个问题,该同事目前正在测试在 Minikube 中安装 docker 守护程序作为 Mac 和 Windows 上 Docker Desktop 的替代方案。

我现在只能想到两个解决这个问题的方法:在我所有的 Jenkins 从站中安装 docker 守护进程,或者构建和使用我自己的构建器镜像,它已经包含了证书。

这两种解决方案都有其缺点。在实现第一个时,我需要在我的所有奴隶中处理我的私人注册表的凭据。后者需要定期构建新版本以获取构建器映像的更新。此外,这只会修复这种特定情况,我需要容器中的这三个特定文件。

你还有别的想法吗?

提前致谢!

0 投票
1 回答
177 浏览

buildpack - Buildpacks Distroless 运行时映像支持

是否可以将distroless映像与 buildpacks 一起使用?

0 投票
0 回答
160 浏览

buildpack - Docker构建中的Spring Boot通过buildpack无法加载字体

我的 Spring Boot 应用程序在 Docker 中运行,并由gradlew bootBuildImage. 在 Docker 容器应用程序中运行时无法加载字体

根本原因似乎缺少fontconfigttf-dejavu包。使用时,可以使用, ,等Dockerfile轻松安装这些软件包apk addyumapt-get

但是https://github.com/paketo-buildpacks/spring-boothttps://github.com/paketo-buildpacks/bellsoft-liberica没有安装附加包的选项。

是否有 buildpack(或配置选项)可以构建带有字体支持的 Docker 图像?

0 投票
1 回答
96 浏览

maven - skaffold:使用本地 maven 依赖构建图像

我正在使用packcli 构建图像:

这是我的项目结构:

如您所见,我管理着两个 Maven 项目。

我的主机构建步骤是:

我的意思是,我首先安装hes-spring-boot-core到本地存储库中,然后构建hes-mpi-fhir-mongodb

我的skaffold.yml文件是:

当我尝试构建图像时,我收到了这条消息:

这让我觉得 maven builder 无法找到 artifact cat.gencat.catsalut.hes:hes-spring-boot-core:jar:1.0.6

pack cli执行上述命令时不会出现此错误!

如何将此项目添加为依赖项?

我已经查看了文档。有一些领域让我很困惑:

dependencies: skaffold 应该监视此工件的重建和文件同步的文件依赖项。

工件依赖性:您可以使用 requires 关键字定义对其他工件的依赖性。这对于将另一个工件图像指定为 builder 或 runImage 很有用。

我正在使用 skaffold v1.35.1

信息

  • 支架版本:1.35.1
  • 操作系统:
  • 通过安装:skaffold.dev
  • skaffold.yaml 的内容:

我也尝试构建两个图像。但是问题就来了。

0 投票
1 回答
78 浏览

docker - Cloud Native Buildpacks 只是一种自动执行多阶段容器映像构建的方法吗?

我开始使用pack为我的应用程序构建容器映像。我为不同的应用程序使用了不同的构建器:gcr.io/buildpacks/builder用于 Node.js 应用程序,paketobuildpacks/builder:tiny用于 Clojure 应用程序。

不必编写 Dockerfile 很棒,但我仍然不确定 Cloud Native Buildpacks 是如何工作的。buildpacks 是否只是一堆可执行文件(由构建器运行),可以实现与手动编写 Docker多阶段构建(即FROMDockerfile 中的多个指令)的开发人员相同的结果?

0 投票
1 回答
23 浏览

gradle - java/spring-boot/gradle 使用 pack 和 paketobuildpacks/builder:base 构建的映像中的错误入口点

我有一个非常简单的 java spring-boot gradle 应用程序。当我从源代码构建图像时:

pack build testapp:0.0.1 --builder paketobuildpacks/builder:base

并尝试使用 docker 运行它,我收到以下错误:

ERROR: failed to launch: determine start command: when there is no default process a command is required.

此图中生成的入口点是"/cnb/lifecycle/launcher".

当我检查图像时pack inspect-image没有任何进程。

我用不同的 java spring-boot gradle 应用程序尝试了这个。当我使用“bootBuildImage” gradle 任务时,它的作用几乎相同,但使用的是预构建的 .jar 文件,并且生成的图像可以工作。此图中生成的入口点是"/cnb/process/web"pack inspect-image显示了三个进程。

有任何想法吗?