问题标签 [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.
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 错误日志:
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 配置开箱即用的东西?
解决方法:
- 如果我直接使用 docker 运行映像,我可以使用
docker run --init
能够向 jvm 进程发出信号(我的应用程序使用 PID 7 运行)。不适用于 Kubernetes。
我可以
shareProcessNamespace: true
在我的 k8s 规范中让它以 1 以外的 PID 运行,但由于安全合规性要求,这很难证明是合理的。我可以只添加 jvm 标志
-XX:+ExitOnOutOfMemoryError
,但没有 jvmkill 显示的良好堆转储以及 jvmkill 线程创建失败覆盖。
spring-boot - spring boot buildpack 总是从 git 下载最新的 packeto 镜像
我使用 buildpack 使用以下命令从我的 Spring Boot 应用程序 2.5 版本创建了一个映像。
但是,每次我重建图像时,如果 packeto buildpack(在 git 中)发生变化,它会下载整个 packeto 构建器,占用我磁盘的不必要空间。我怎样才能通过仅指定特定标签来避免这种情况,这样git中packeto的每次更新都不会被拉到我的图像中......
spring-boot - 使用 Spring Boot Paketo Buildpack 时的 Dockerfile“VOLUME”等效项
我目前正在将 Spring Boot App 的容器化从Dockerfile
文件迁移到 Spring Boot Maven Plugin build-image
。
现在我想知道如何在这种情况下配置卷。相当于VOLUME ["/var/store"]
在Dockerfile
. 我已经用谷歌搜索了一段时间,感谢您的帮助。谢谢!
java - 添加 -agentlib 选项时无法使用 graalVM 编译 spring 应用程序
我目前陷入了一个奇怪的问题。我正在从 SpringBoot JVM 应用程序迁移到 GraalVM 本机应用程序。
为了实现这一点,我需要手动覆盖 GraalVM 制作的 reflectioc-config.json。为此,我想通过 graal 自动生成一个,以避免重写所有内容(并且还要知道他所做的一切)。但是,当我添加-agentlib:native-image-agent=config-output-dir=src/graal
论点时,一切都出错了。
我的意思是,没有这个,本机映像编译并运行(后来,因为它错过了一些初始化而崩溃),但是有了这一行,它在编译时完全崩溃,因为
我基本上什至不知道什么是 JVMTI,为什么需要它,以及为什么它现在是一个问题(所以,如何解决它^^')我用谷歌搜索了它,但我没有找到与我的具体案例相关的东西有人已经对spring-native有这个问题了吗?
我想你可能需要它,完整的错误信息:
image - 如何修改 paketo buildpack 中的默认用户组?
我使用 --builder paketobuildpacks/builder:base 构建了一个图像,但我的应用程序出错了,因为没有权限。
然后我发现paketobuildpacks stacks的运行镜像设置了默认用户:
当我使用 k8s 时,我尝试设置runAsUser: 0
或--allow-privileged=true
强制它使用 root 并且它可以工作,但我认为这不是一个好的解决方案。
如何修改 pack build 命令中的默认用户组?
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
命令的完整输出:
java - 如何修复“编译器为空,也许您在 JRE 环境中,请更改为 JDK 环境”
拥有一个 Spring Boot 应用程序,我尝试使用Paketo Buildpack
但它没有随 JDK 一起提供,只有 JRE 可用。
它来了一个错误
如何将 jdk 添加到我的应用映像中?
spring-boot - 运行 bootBuildImage 时出现 Docker API 500 错误
我们最近开始使用 Gradle 的 bootBuildImage 任务来构建 docker 镜像。在本地,我们可以毫无问题地成功构建镜像,但是我们的 Jenkins 构建有时会随机失败并出现以下错误:
再次运行构建解决了这个问题。有没有人遇到过同样的问题?
项目中使用的版本:
弹簧启动版本:2.5.0
jdk版本:11
毕业版本:6
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,我看不到自定义构建的方法,因此映像将包含其他软件。