问题标签 [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 回答
1716 浏览

amazon-web-services - 如何解决用于构建 spring-boot 应用程序的 Paketo buildpack 的内存问题?

我正在使用部署到 AWS BeanStalk 的 spring-boot-maven-plugin 构建 Docker 映像。我通过2.4.3 spring boot starter依赖使用插件)但是,当容器启动时,我得到下面的错误。我对 buildpack 的东西有点陌生,但试图通过使用网站上描述的 Buildpack env 变量来解决它。但它对下面错误日志中显示的值绝对没有影响。我发现了这个github 问题,但不确定它是否相关以及如何使用它。

我正在使用具有 1G 总 RAM 的 AWS Micro 实例,它执行滚动更新,因此在启动新映像时,另一个也在运行直到新映像成功启动,因此启动容器也可以只有 300MB 可用,但是,在正常运行期间它有更多可用空间。

为什么我需要这个内存计算?我不能禁用它吗?当我构建 app.jar 的 Docker 映像并将其部署到 aws beanstalk 时,它在没有任何内存设置的情况下运行良好:

码头工人建造。--build-arg JAR_FILE=./target/app.jar -t $APPLICATION_NAME

但我很想通过 spring-boot-maven 插件使用图像构建。请就如何解决这个问题提出一些建议?

部署期间的 AWS Beanstalk 错误:

在 AWS Beanstalk 中下载的 Docker 错误日志:

0 投票
1 回答
222 浏览

kubernetes - jvmkill 无法杀死由 Paketo Java Buildpack 创建的映像中的 JVM

我在使用官方 spring boot gradle 插件创建的容器中有一个 spring boot 应用程序 v2.4.3,该插件使用 buildpakcs 来执行此操作。

其中一层是 jvmkill:

这很好,它正在为 jvmkill 正确添加 jvm arg

该应用程序在 Kubernetes (AWS EKS) 中运行,但是当我收到 OOM 时

jvmkill 启动,打印堆转储并发送终止信号

但是jvm永远不会被杀死。 检查容器时,我注意到应用程序以 PID 1 运行,无法从容器内部终止(或发出信号)。

由于所有这些都是由 java buildpack 本身构建的,我希望它知道 PID 1 不能被杀死并以不同的方式启动应用程序以正常工作。

我是否缺少或需要为 buildpack jvmkill 配置开箱即用的东西?

解决方法:

  1. 如果我直接使用 docker 运行映像,我可以使用docker run --init能够向 jvm 进程发出信号(我的应用程序使用 PID 7 运行)。不适用于 Kubernetes。
  1. 我可以shareProcessNamespace: true在我的 k8s 规范中让它以 1 以外的 PID 运行,但由于安全合规性要求,这很难证明是合理的。

  2. 我可以只添加 jvm 标志-XX:+ExitOnOutOfMemoryError,但没有 jvmkill 显示的良好堆转储以及 jvmkill 线程创建失败覆盖。

0 投票
1 回答
123 浏览

spring-boot - spring boot buildpack 总是从 git 下载最新的 packeto 镜像

我使用 buildpack 使用以下命令从我的 Spring Boot 应用程序 2.5 版本创建了一个映像。

但是,每次我重建图像时,如果 packeto buildpack(在 git 中)发生变化,它会下载整个 packeto 构建器,占用我磁盘的不必要空间。我怎样才能通过仅指定特定标签来避免这种情况,这样git中packeto的每次更新都不会被拉到我的图像中......

0 投票
1 回答
243 浏览

spring-boot - 使用 Spring Boot Paketo Buildpack 时的 Dockerfile“VOLUME”等效项

我目前正在将 Spring Boot App 的容器化从Dockerfile文件迁移到 Spring Boot Maven Plugin build-image

现在我想知道如何在这种情况下配置卷。相当于VOLUME ["/var/store"]Dockerfile. 我已经用谷歌搜索了一段时间,感谢您的帮助。谢谢!

0 投票
0 回答
80 浏览

java - 添加 -agentlib 选项时无法使用 graalVM 编译 spring 应用程序

我目前陷入了一个奇怪的问题。我正在从 SpringBoot JVM 应用程序迁移到 GraalVM 本机应用程序。

为了实现这一点,我需要手动覆盖 GraalVM 制作的 reflectioc-config.json。为此,我想通过 graal 自动生成一个,以避免重写所有内容(并且还要知道他所做的一切)。但是,当我添加-agentlib:native-image-agent=config-output-dir=src/graal论点时,一切都出错了。

我的意思是,没有这个,本机映像编译并运行(后来,因为它错过了一些初始化而崩溃),但是有了这一行,它在编译时完全崩溃,因为

我基本上什至不知道什么是 JVMTI,为什么需要它,以及为什么它现在是一个问题(所以,如何解决它^^')我用谷歌搜索了它,但我没有找到与我的具体案例相关的东西有人已经对spring-native有这个问题了吗?

我想你可能需要它,完整的错误信息:

0 投票
1 回答
123 浏览

image - 如何修改 paketo buildpack 中的默认用户组?

我使用 --builder paketobuildpacks/builder:base 构建了一个图像,但我的应用程序出错了,因为没有权限。

然后我发现paketobuildpacks stacks的运行镜像设置了默认用户:

当我使用 k8s 时,我尝试设置runAsUser: 0--allow-privileged=true强制它使用 root 并且它可以工作,但我认为这不是一个好的解决方案。

如何修改 pack build 命令中的默认用户组?

0 投票
1 回答
391 浏览

node.js - 使用 Paketo Buildpacks 容器化 Angular 应用程序:空回复

我想使用适用于 nodejs 的 Paketo buildpack 创建我的 Angular 12 应用程序的容器映像。我通过 Angular CLI 创建了应用程序并将其编码,直到现在我想部署它。

为了创建容器,我按照 paketo 示例存储库中的说明运行了以下命令:

这很好用,因为我在运行之前删除了 node_modules 目录pack

现在我想在本地测试图像并尝试使用

好像启动成功了:

现在问题来了:

有谁知道出了什么问题?

编辑:我目前最好的猜测是ng serve监听 127.0.0.1:4200 但应该监听0.0.0.0:4200流量通过。但我不确定在哪里寻找配置。在构建包中?在 angular.cli 中?别的地方?

编辑:根据要求,pack命令的完整输出:

0 投票
1 回答
46 浏览

java - 如何修复“编译器为空,也许您在 JRE 环境中,请更改为 JDK 环境”

拥有一个 Spring Boot 应用程序,我尝试使用Paketo Buildpack

但它没有随 JDK 一起提供,只有 JRE 可用。

它来了一个错误

如何将 jdk 添加到我的应用映像中?

0 投票
0 回答
177 浏览

spring-boot - 运行 bootBuildImage 时出现 Docker API 500 错误

我们最近开始使用 Gradle 的 bootBuildImage 任务来构建 docker 镜像。在本地,我们可以毫无问题地成功构建镜像,但是我们的 Jenkins 构建有时会随机失败并出现以下错误:

再次运行构建解决了这个问题。有没有人遇到过同样的问题?

项目中使用的版本:

  • 弹簧启动版本:2.5.0

  • jdk版本:11

  • 毕业版本:6

0 投票
0 回答
131 浏览

spring-boot - 如何使用 Spring Boot buildpack 构建带有附加包的 OCI 映像

我正在使用带有 Gradle 插件的 Spring Boot https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/htmlsingle/#build-image 来构建 OCI 图像。这适用于基本用例(Web 应用程序打包为图像内的 jar)。我对我的图像进行了更多的自定义

  • 使用 curl 下载一些包
  • 在镜像中安装和自定义这些包

如何配置 gradle 插件来执行这些步骤?在迁移到 OCI buildpacks 之前,我有 Dockerfile 和 bash 命令。使用 buildpacks,我看不到自定义构建的方法,因此映像将包含其他软件。