我想实现以下目标:将我的Spring应用程序打包到一个Dockerimage中,在这里我可以调用npx命令,以便调用我的应用程序中需要的第三方节点库。
我的兄弟看起来是这样的:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>build-image</goal>
</goals>
</execution>
</executions>
<configuration>
<image>
<name>my-app</name>
<buildpacks>
<buildpack>gcr.io/paketo-buildpacks/nodejs</buildpack>
<buildpack>gcr.io/paketo-buildpacks/java</buildpack>
</buildpacks>
</image>
</configuration>
</plugin>
</plugins>
</build>现在,使用mvn包,插件将被执行,但首先:它将失败,错误:
加载图像时收到的无效响应"pack.local/builder/ayvwrfbvbm:latest“
但是,如果我通过打包启动整个过程,则会创建图像
pack build my-app --builder paketobuildpacks/builder:base --buildpack paketo-buildpacks/nodejs --buildpack paketo-buildpacks/java但是在创建的映像中,我不能调用节点,也不能调用npm或npx,因为似乎没有添加这些层。
如果我然后添加了一个package.json和一个server.js到我的应用程序-根,它似乎是添加了npm -安装层,但我仍然不能从我的容器中调用节点、npm或npx。
请有人告诉我如何创建一个运行spring引导应用程序的映像,然后通过
Runtime.getRuntime().exec("npx my3rdParty-cli");发布于 2022-07-20 15:40:23
几个音符。
--buildpack paketo-buildpacks/nodejs --buildpack paketo-buildpacks/java这样的内置包时,并不意味着它们都会运行。两种方法都将检查您的代码并确定它们是否可以运行,这就是所谓的检测过程,但最终只有您设置的两个buildpack组中的一个将被选中来构建您的应用程序。
当您在顶部运行构建时,它会打印一个选择要执行的构建包的列表,这样您就可以确切地看到正在执行的是什么。
===>检测参与paketo-buildpack/ca的24个构建包中的6个-证书3.2.4 paketo-buildpack/bellsoft-liberica buildpack/syft 1.13.0 paketo-buildpack/可执行-jar 6.2.4 paketo-buildpack/dist-zip 5.2.4 paketo-buildpack/spring-boot 5.13.0 .package.json文件,它将运行Node.js。他们是相互独立的。
有一个公开发行可以将Node.js添加到Java组中,这样就可以支持像这样的用例。https://stackoverflow.com/questions/73048483
复制相似问题