如何将标志传递给由 Cloud Native Buildpacks (CNB) 构建的 Docker 容器中的 java 进程
How to pass flags to java process in Docker contatiner built by Cloud Native Buildpacks (CNB)
通常当我创建 Docker 图像时,我会这样做:
FROM openjdk:15-jdk-slim
ARG version=undefined
LABEL version=${version}
WORKDIR /
COPY build/libs/v2t-api-$version.jar /v2t-api.jar
USER nobody
VOLUME ["/tmp"]
EXPOSE 8080
EXPOSE 8081
ENTRYPOINT ["sh", "-c", "exec java ${JAVA_OPTS} -jar v2t-api.jar"]
因此,当我在例如 kubernetes 中启动我的容器时,我可以设置 JAVA_OPTS,它定义了有多少内存可用于堆或实际有多少 CPU。
使用内置 gradle plugin from Spring Boot 打包 OCI 图像看起来很有趣,但我找不到如何在构建包中做类似的事情 - 我想为 java 进程设置一些标志,所以我该怎么做?
According to the Paketo.io docs 有两种环境变量可以传递给 Paketo 构建:
如果我正确理解你的问题,你正在寻找一种配置运行时环境变量 (2.) 的方法。为此,您需要将环境变量传递给容器 运行ning 您的应用程序(之前由 CNB/Paketo 构建),例如通过使用 --env
标志。正如文档所述
Users may configure runtime features of the app image by setting
environment variables in the app container. The names of variables
accepted by buildpack-provided runtime components [..] are prefixed with BPL_ or have well-known
conventional meanings outside of Paketo (e.g JAVA_TOOL_OPTIONS).
例如,如果您构建一个名为 v2t-api:latest
的容器映像,那么您可以 运行 您的容器:
docker run --env "JAVA_TOOL_OPTIONS=-Xms1024m -Xmx2048m" v2t-api:latest
我可以建议您从 JAVA_OPTS
切换到 JAVA_TOOL_OPTIONS
,因为在正常关闭的情况下您的应用程序将不会收到 sigterm 并且您的应用程序不会正确关闭(请参阅this so answer for more details).
通常当我创建 Docker 图像时,我会这样做:
FROM openjdk:15-jdk-slim
ARG version=undefined
LABEL version=${version}
WORKDIR /
COPY build/libs/v2t-api-$version.jar /v2t-api.jar
USER nobody
VOLUME ["/tmp"]
EXPOSE 8080
EXPOSE 8081
ENTRYPOINT ["sh", "-c", "exec java ${JAVA_OPTS} -jar v2t-api.jar"]
因此,当我在例如 kubernetes 中启动我的容器时,我可以设置 JAVA_OPTS,它定义了有多少内存可用于堆或实际有多少 CPU。
使用内置 gradle plugin from Spring Boot 打包 OCI 图像看起来很有趣,但我找不到如何在构建包中做类似的事情 - 我想为 java 进程设置一些标志,所以我该怎么做?
According to the Paketo.io docs 有两种环境变量可以传递给 Paketo 构建:
如果我正确理解你的问题,你正在寻找一种配置运行时环境变量 (2.) 的方法。为此,您需要将环境变量传递给容器 运行ning 您的应用程序(之前由 CNB/Paketo 构建),例如通过使用 --env
标志。正如文档所述
Users may configure runtime features of the app image by setting environment variables in the app container. The names of variables accepted by buildpack-provided runtime components [..] are prefixed with BPL_ or have well-known conventional meanings outside of Paketo (e.g JAVA_TOOL_OPTIONS).
例如,如果您构建一个名为 v2t-api:latest
的容器映像,那么您可以 运行 您的容器:
docker run --env "JAVA_TOOL_OPTIONS=-Xms1024m -Xmx2048m" v2t-api:latest
我可以建议您从 JAVA_OPTS
切换到 JAVA_TOOL_OPTIONS
,因为在正常关闭的情况下您的应用程序将不会收到 sigterm 并且您的应用程序不会正确关闭(请参阅this so answer for more details).