为 OpenShift 使用 OpenJDK 8 source-to-image
摘要
使开源包含更多
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
对红帽文档提供反馈
我们感谢您对我们文档的反馈。要提供反馈,您可以突出显示文档中的文本并添加注释。
本节介绍如何提交反馈。
先决条件
- 登录到红帽客户门户网站。
- 在红帽客户门户网站中,以 多页 HTML 格式查看文档。
流程
要提供反馈,请执行以下步骤:
点击文档右上角的 反馈 按钮查看现有反馈。
注意反馈功能仅在多页 HTML 格式中启用。
- 高亮标记您要提供反馈的文档中的部分。
点击在高亮文本旁边弹出的 添加反馈。
文本框会出现在页面右侧的 feedback部分中。
在文本框中输入您的反馈,然后点 Submit。
已创建一个文档问题。
- 要查看问题,请单击反馈视图中的问题跟踪器链接。
第 1 章 OpenShift 的 source-to-image 简介
OpenShift Container Platform 提供了一个 Source-to-image(S2I)进程来构建和运行应用程序。您可以在构建器镜像之上附加应用程序的源代码(如 JBoss EAP)。S2I 流程构建应用并将其基于构建器镜像的层来创建应用程序镜像。构建应用程序镜像后,您可以将它推送到 OpenShift 中集成 registry 或 独立注册表。
通过 S2I 用于 OpenShift,您可以在 OpenShift 上的容器化镜像中构建并运行基本 Java 应用,如 fat-jar 或 flat classpath。
1.1. 镜像流定义
默认情况下,Red Hat OpenShift Container Platform 包含包含 Red Hat OpenJDK 容器镜像的镜像流。
您可以将镜像流定义导入新命名空间或重新创建它们。您可以在 openjdk GitHub 页面上访问这些镜像流模板。
Red Hat OpenShift Container Platform 包含 java 作为镜像流,它遵循最新版本的容器镜像。此镜像流包含以下标签:
-
:latest,提供最新支持的 OpenJDK 版本。标记会跟踪此镜像流的任何更新。 -
:11,提供最新的 JDK 11 镜像。 -
:8,提供最新的 JDK 8 镜像。
以前的镜像流及其标签基于 RHEL Universal Base Image(UBI)的最新版本。
如果要选择特定的 RHEL 或 OpenJDK 版本,请选择带有 openjdk-X-ubiY 格式的标签,其中 X 代表 OpenJDK 版本,Y 代表 RHEL 版本。
以下示例演示了采用以下格式的标签:
-
openjdk-8-ubi8 -
openjdk-11-ubi8 -
openjdk-17-ubi8
存在特定镜像流以准确跟踪最新容器镜像版本。这些镜像流采用 ubiX-openjdk-Y 格式,其中 X 指定 RHEL UBI 版本,Y 指定了 OpenJDK 版本。以下示例演示了采用以下格式的镜像流:
-
ubi8-openjdk-8 -
ubi8-openjdk-11 -
ubi8-openjdk-17
这些镜像流的标签直接映射到镜像版本,如 1.11、1.12 等。
第 2 章 开始前
初始设置
创建 OpenShift 实例。如需有关如何创建 OpenShift 实例的更多详细信息,请参阅 OpenShift Container Platform 安装概述。
版本兼容性和支持
OpenShift Container Platform 版本 3.11、4.7 及以上 4.7 支持 OpenShift 镜像的 S2I。
如需有关 OpenShift Container Platform 当前支持级别的详细信息,请参阅 Red Hat OpenShift Container Platform 生命周期政策 和 Red Hat OpenShift Container Platform 生命周期政策(非当前版本 )。
第 3 章 将 source-to-image 用于 OpenShift
您可以使用 Source-to-image (S2I) for OpenShift 镜像在 OpenShift 上运行自定义 Java 应用。
3.1. 使用 OpenShift 的 source-to-image 构建和部署 Java 应用程序
要使用 Source-to-image (S2I) for OpenShift 镜像从 OpenShift 上的源构建和部署 Java 应用,请使用 OpenShift S2I 流程。
流程
运行以下命令并提供您的凭证,以登录到 OpenShift 实例:
$ oc login
创建一个新项目:
$ oc new-project <project-name>
使用 S2I 为 OpenShift 镜像创建新应用程序:
& lt;source-location > 是 GitHub 存储库的 URL,或到本地文件夹的路径。
$ oc new-app
<source-location>例如:
$ oc new-app --context-dir=getting-started --name=quarkus-quickstart \ 'registry.access.redhat.com/ubi8/openjdk-11~https://github.com/quarkusio/quarkus-quickstarts.git#2.12.1.Final'
获取服务名称:
$ oc get svc
将服务作为路由公开,以便您可以从浏览器中使用服务器:
$ oc expose svc/ --port=8080
获取路由:
$ oc get route
-
使用 URL 访问浏览器中的应用程序。使用上一命令输出中的
HOST/PORT字段的值。
其他资源
- 如需更多详细信息,请参阅 OpenShift 的 source-to-image 上的运行平面类路径 JAR。
3.2. 从二进制工件构建和部署 Java 应用程序
您可以使用二进制源功能在 OpenShift 上部署现有 Java 应用程序。
该流程使用 undertow-servlet 快速入门来在本地计算机上构建 Java 应用程序。Quickstarts 通过使用 S2I 二进制源功能将生成的二进制 Artifacts 复制到 OpenShift 中。
先决条件
- 在本地计算机上启用 红帽 JBoss Enterprise Maven 存储库。
获取 JAR 应用存档并在本地构建应用程序。
克隆 undertow-servlet 源代码:
$ git clone https://github.com/jboss-openshift/openshift-quickstarts.git
构建应用程序:
$ cd openshift-quickstarts/undertow-servlet/
$ mvn clean package [INFO] Scanning for projects... ... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Undertow Servlet Example 1.0.0.Final [INFO] ------------------------------------------------------------------------ ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.986 s [INFO] Finished at: 2017-06-27T16:43:07+02:00 [INFO] Final Memory: 19M/281M [INFO] ------------------------------------------------------------------------
在本地文件系统中准备目录结构。
将 deployments/ 子目录(主二进制构建目录)中的应用程序存档复制到标准部署文件夹中(镜像在 OpenShift 上构建的位置)。构造包含要部署的应用的 Web 应用数据的目录层次结构。
在本地文件系统和 部署/ 子目录中为二进制构建创建主目录。将构建的 JAR 存档复制到 deployments/ 子目录中:
undertow-servlet]$ ls dependency-reduced-pom.xml pom.xml README src target
$ mkdir -p ocp/deployments
$ cp target/undertow-servlet.jar ocp/deployments/
流程
运行以下命令并提供您的凭证,以登录到 OpenShift 实例:
$ oc login
创建一个新项目:
$ oc new-project jdk-bin-demo
创建一个新的二进制构建,并指定镜像流和应用程序名称:
$ oc new-build --binary=true \ --name=jdk-us-app \ --image-stream=java:11 --> Found image c1f5b31 (2 months old) in image stream "openshift/java:11" under tag "latest" for "java:11" Java Applications ----------------- Platform for building and running plain Java applications (fat-jar and flat classpath) --> Creating resources with label build=jdk-us-app ... imagestream "jdk-us-app" created buildconfig "jdk-us-app" created --> Success Application is not exposed. You can expose services to the outside world by executing one or more of the commands below: 'oc expose svc/jdk-us-app'启动二进制构建。
指示
oc可执行文件使用在上一步中创建的二进制构建主目录作为包含 OpenShift 构建二进制输入的目录:$ oc start-build jdk-us-app --from-dir=./ocp --follow Uploading directory "ocp" as binary input for the build ... build "jdk-us-app-1" started Receiving source from STDIN as archive ... ================================================================== Starting S2I Java Build ..... S2I source build with plain binaries detected Copying binaries from /tmp/src/deployments to /deployments ... ... done Pushing image 172.30.197.203:5000/jdk-bin-demo/jdk-us-app:latest ... Pushed 0/6 layers, 2% complete Pushed 1/6 layers, 24% complete Pushed 2/6 layers, 36% complete Pushed 3/6 layers, 54% complete Pushed 4/6 layers, 71% complete Pushed 5/6 layers, 95% complete Pushed 6/6 layers, 100% complete Push successful
基于构建创建新的 OpenShift 应用程序:
$ oc new-app jdk-us-app --> Found image 66f4e0b (About a minute old) in image stream "jdk-bin-demo/jdk-us-app" under tag "latest" for "jdk-us-app" jdk-bin-demo/jdk-us-app-1:c1dbfb7a ---------------------------------- Platform for building and running plain Java applications (fat-jar and flat classpath) Tags: builder, java * This image will be deployed in deployment config "jdk-us-app" * Ports 8080/tcp, 8443/tcp, 8778/tcp will be load balanced by service "jdk-us-app" * Other containers can access this service through the hostname "jdk-us-app" --> Creating resources ... deploymentconfig "jdk-us-app" created service "jdk-us-app" created --> Success Run 'oc status' to view your app.将服务作为路由公开。
$ oc expose svc/jdk-us-app route "jdk-us-app" exposed
获取路由:
$ oc get route
-
使用 URL(上一命令输出中的
HOST/PORT字段的值)访问浏览器中的应用程序。
其他资源
- 使用 二进制源 功能在 OpenShift 上部署现有 Java 应用程序。
- 有关如何配置 maven 存储库的更多信息,请参阅 使用 Maven 存储库。
第 4 章 OpenShift 上 S2I 的工作流示例
4.1. 针对 OpenShift 镜像的远程调试 Java 应用程序
该流程中的示例显示,使用 S2I for OpenShift 镜像对 OpenShift 上部署的 Java 应用进行远程调试。您可以通过将环境变量 JAVA_DEBUG 的值设置为 true,将 JAVA_DEBUG_PORT 设置为 9009 来启用此功能。
如果 JAVA_DEBUG 变量被设置为 true,并且没有为 JAVA_DEBUG_PORT 变量提供值,则默认将 JAVA_DEBUG_PORT 设置为 5005。
准备部署
流程
运行以下命令并提供您的凭证,以登录到 OpenShift 实例:
$ oc login
创建一个新项目:
$ oc new-project js2i-remote-debug-demo
Deployment
您可以为新的和现有应用程序启用远程调试。
为新应用程序启用远程调试
流程
使用 S2I 用于 OpenShift 镜像和示例 Java 源代码创建一个新应用。在创建应用程序前,请确保设置了
JAVA_DEBUG和JAVA_DEBUG_PORT环境变量:$ oc new-app --context-dir=getting-started --name=quarkus-quickstart \ 'registry.access.redhat.com/ubi8/openjdk-11~https://github.com/quarkusio/quarkus-quickstarts.git#2.12.1.Final' -e JAVA_DEBUG=true \ -e JAVA_DEBUG_PORT=9009
为现有应用程序启用远程调试
流程
切换到适当的 OpenShift 项目:
$ oc project js2i-remote-debug-demo
检索 deploymentconfig 的名称:
$ oc get dc -o name deploymentconfig/openshift-quickstarts
-
编辑 deploymentconfig 并添加
JAVA_DEBUG=true和JAVA_DEBUG_PORT=9009环境变量。 指定在路径
.spec.template.spec.containers和Container类型中编辑的对象:$ oc edit dc/openshift-quickstarts
注意在终端中启动运行
oc edit命令的编辑器。您可以通过定义环境的EDITOR变量来更改启动的编辑器。
post-deployment
将本地调试端口连接到 pod 上的端口
流程
获取运行应用程序的 pod 的名称(Status Running):
显示
openshift- Quickstarts-1-1uymm作为 pod 名称的示例。$ oc get pods NAME READY STATUS RESTARTS AGE openshift-quickstarts-1-1uymm 1/1 Running 0 3m openshift-quickstarts-1-build 0/1 Completed 0 6m
使用 OpenShift 或 Kubernetes 端口转发功能侦听本地端口并转发到 OpenShift Pod 上的端口。<running-pod > 是 pod 的 NAME 字段的值,它来自上一命令输出中的 Status "running":
$ oc port-forward <running-pod> 5005:9009 Forwarding from 127.0.0.1:5005 -> 9009 Forwarding from [::1]:5005 -> 9009
注意在上例中,5005 是本地系统上的端口号,而
9009是运行 OpenShift 镜像的 S2I 的 OpenShift 容器集的远程端口号。因此,以后在调试连接到本地端口5005的连接,转发到运行 Java 虚拟机(JVM)的 OpenShift pod 的端口9009。
该命令可能会阻止您在终端中进一步键入。在这种情况下,启动一个新终端来执行后续步骤。
将调试器附加到应用程序
流程
将本地系统上的调试器附加到 S2I for OpenShift 镜像上运行的远程 JVM:
$ jdb -attach 5005 Set uncaught java.lang.Throwable Set deferred uncaught java.lang.Throwable Initializing jdb ... > ...
注意启动到远程 OpenShift pod 调试连接的本地调试器后,控制台中会显示与处理
5005连接类似的条目,控制台上发出了上一 oc port-forward 命令。调试应用程序:
$ jdb -attach 5005 Set uncaught java.lang.Throwable Set deferred uncaught java.lang.Throwable Initializing jdb ... > threads Group system: (java.lang.ref.Reference$ReferenceHandler)0x79e Reference Handler cond. waiting (java.lang.ref.Finalizer$FinalizerThread)0x79f Finalizer cond. waiting (java.lang.Thread)0x7a0 Signal Dispatcher running Group main: (java.util.TimerThread)0x7a2 server-timer cond. waiting (org.jolokia.jvmagent.CleanupThread)0x7a3 Jolokia Agent Cleanup Thread cond. waiting (org.xnio.nio.WorkerThread)0x7a4 XNIO-1 I/O-1 running (org.xnio.nio.WorkerThread)0x7a5 XNIO-1 I/O-2 running (org.xnio.nio.WorkerThread)0x7a6 XNIO-1 I/O-3 running (org.xnio.nio.WorkerThread)0x7a7 XNIO-1 Accept running (java.lang.Thread)0x7a8 DestroyJavaVM running Group jolokia: (java.lang.Thread)0x7aa Thread-3 running >
其他资源
- 如需有关 Openshift 通用对象参考的更多信息,请参阅 OpenShift 通用对象参考章节容器。
- 有关将红帽 JBoss Developer Studio 的 IDE 调试器连接到运行 OpenShift 镜像的 S2I 的 OpenShift pod 的更多信息,请参阅配置和连接 IDE Debugger。
4.2. 为 OpenShift 在 source-to-image 上运行扁平类路径 JAR
该流程中的示例描述了在 OpenShift 的 S2I 上运行扁平类路径 java 应用程序的过程。
准备部署
流程
通过提供您的凭证登录到 OpenShift 实例:
$ oc login
创建一个新项目:
$ oc new-project js2i-flatclasspath-demo
Deployment
流程
使用 S2I 为 OpenShift 镜像和 Java 源代码创建新应用程序:
$ oc new-app --context-dir=getting-started --name=quarkus-quickstart \ 'registry.access.redhat.com/ubi8/openjdk-11~https://github.com/quarkusio/quarkus-quickstarts.git#2.12.1.Final'
post-deployment
流程
获取服务名称:
$ oc get svc
将服务作为路由公开,以便能够从浏览器中使用它:
$ oc expose svc/openshift-quickstarts --port=8080
获取路由:
$ oc get route
-
使用 URL(上一命令输出中的
HOST/PORT字段的值)访问浏览器中的应用程序。
第 5 章 参考
5.1. 版本详情
下表列出了此镜像中使用的技术版本。
表 5.1. 此镜像中使用的技术版本
| 技术 | 版本 |
|---|---|
| OpenJDK | 8 |
| Jolokia | 1.6.2 |
| maven | 3.6 |
5.2. 信息环境变量
以下信息环境变量旨在提供有关镜像的信息。不要修改这些变量。
表 5.2. 信息环境变量
| 变量名称 | 值 |
|---|---|
| HOME | /home/jboss |
| JAVA_HOME | /usr/lib/jvm/java-1.8.0 |
| JAVA_VENDOR | OpenJDK |
| JAVA_VERSION | 1.8.0 |
| JOLOKIA_VERSION | 1.6.2 |
| LD_PRELOAD | libnss_wrapper.so |
| MAVEN_VERSION | 3.6 |
| NSS_WRAPPER_GROUP | /etc/group |
| NSS_WRAPPER_PASSWD | /home/jboss/passwd |
5.3. 配置环境变量
配置环境变量旨在方便调整镜像,而无需重新构建,应根据需要为用户设置。
表 5.3. 配置环境变量
| 变量名称 | 描述 | 默认值 | 示例值 |
|---|---|---|---|
| AB_JOLOKIA_CONFIG |
如果设置使用此文件(包括路径)作为 Jolokia JVM 代理属性(如 Jolokia 参考手册中所述)。如果没有设置,则使用 manual 中定义的设置创建 | - | /opt/jolokia/custom.properties |
| AB_JOLOKIA_DISCOVERY_ENABLED | 启用 Jolokia 发现。 | false | true |
| AB_JOLOKIA_HOST | 要绑定到的主机地址。 | 0.0.0.0 | 127.0.0.1 |
| AB_JOLOKIA_ID | 要使用的代理 ID,即容器 ID。 |
| openjdk-app-1-xqlsj |
| AB_JOLOKIA_OFF | 如果设置禁用 Joloka 激活(即,回显空值)。 | Jolokia 已启用 | true |
| AB_JOLOKIA_OPTS |
要附加到代理配置的额外选项。它们应该以 | - | backlog=20 |
| AB_JOLOKIA_PASSWORD | 用于基本身份验证的密码。默认情况下关闭身份验证。 | - | mypassword |
| AB_JOLOKIA_PORT | 要侦听的端口。 | 8778 | 5432 |
| AB_JOLOKIA_USER | 用于基本身份验证的用户。 | jolokia | myusername |
| AB_PROMETHEUS_ENABLE | 启用使用 Prometheus 代理。 | - | True |
| AB_PROMETHEUS_JMX_EXPORTER_PORT | 用于 Prometheus JMX Exporter 的端口。 | - | 9799 |
| CONTAINER_CORE_LIMIT | CFS Bandwidth Control 中描述的计算核心限制。 | - | 2 |
| CONTAINER_MAX_MEMORY | 分配给容器的内存限值。 | - | 1024 |
| GC_ADAPTIVE_SIZE_POLICY_WEIGHT | 给定给当前垃圾收集器时间的权重与之前的垃圾收集器时间。 | - | 90 |
| GC_CONTAINER_OPTIONS | 指定要使用的 Java GC。这个变量的值应该包含所需的 JRE 命令行选项来指定所需的 GC,这将覆盖默认值。 | -XX:+UseParallelOldGC | -XX:+UseG1GC |
| GC_MAX_HEAP_FREE_RATIO | GC 年后释放的最大堆百分比以避免缩小。 | - | 40 |
| GC_MAX_METASPACE_SIZE | 最大元空间大小。 | - | 100 |
| GC_METASPACE_SIZE | 初始的元空间大小。 | - | 20 |
| GC_MIN_HEAP_FREE_RATIO | GC 年后释放的最小堆百分比以避免扩展。 | - | 20 |
| GC_TIME_RATIO | 指定垃圾回收外部花费的时间比率(例如,应用程序执行所花费的时间)与垃圾回收中花费的时间。 | - | 4 |
| HTTPS_PROXY | HTTPS 代理的位置。这优先于 http_proxy 和 HTTP_PROXY,它将用于 Maven 构建和 Java 运行时。 | - | myuser@127.0.0.1:8080 |
| HTTP_PROXY | HTTP 代理的位置。这将用于 Maven 构建和 Java 运行时。 | - | 127.0.0.1:8080 |
| JAVA_APP_DIR | 应用程序所在的目录。应用程序中的所有路径都相对于这个目录。 | - | myapplication/ |
| JAVA_ARGS |
传递给 | - | - |
| JAVA_CLASSPATH |
要使用的类路径。如果未提供,则 启动脚本将检查文件 | - | - |
| JAVA_DEBUG | 如果设置了远程调试,则会切换。 | false | true |
| JAVA_DEBUG_PORT | 用于远程调试的端口。 | 5005 | 8787 |
| JAVA_DIAGNOSTICS | 将其设置为在命令运行时打印一些诊断信息到标准输出。 | false | true |
| JAVA_INITIAL_MEM_RATIO |
在 | 25 | 25 |
| JAVA_LIB_DIR |
保存 Java jar 文件以及包含 | JAVA_APP_DIR | - |
| JAVA_MAIN_CLASS |
作为 | - | com.example.MainClass |
| JAVA_MAX_INITIAL_MEM |
在 | 4096 | 4096 |
| JAVA_MAX_MEM_RATIO |
在 | 50 | - |
| JAVA_OPTS |
传递给 | - | -verbose:class |
| JAVA_OPTS_APPEND | 用户指定的 Java 选项以附加到 JAVA_OPTS 中的生成选项。 | - | -Dsome.property=foo |
| LOGGING_SCRIPT_DEBUG |
设置为 true 以启用脚本调试。弃用 | true | True |
| MAVEN_ARGS |
要在调用 Maven 时使用参数替换 | 软件包 hawt-app:build -DskipTests -e | -e -Popenshift -DskipTests -Dcom.redhat.xpaas.repo.redhatga package |
| MAVEN_ARGS_APPEND | 额外的 Maven 参数。 | - | -X -am -pl |
| MAVEN_CLEAR_REPO |
如果设置,则构建工件后会删除 Maven 存储库。这可用于减少创建的应用程序镜像小的大小,但会阻止 增量构建。 | false | - |
| MAVEN_LOCAL_REPO | 用作本地 Maven 存储库的目录。 | - | /home/jboss/.m2/repository |
| MAVEN_MIRRORS |
如果设置,则启用了多镜像支持,其他 | - | dev-one,qe-two |
| MAVEN_MIRROR_URL | 用于检索工件的镜像的基本 URL。 | - | |
| MAVEN_REPOS |
如果设置,则启用了多存储库支持,其他 | - | dev-one,qe-two |
| MAVEN_S2I_ARTIFACT_DIRS |
要扫描构建输出的源目录的相对路径,将复制到 | 目标 | 目标 |
| MAVEN_S2I_GOALS |
要使用 Maven 构建执行的空格分隔的目标列表。例如, | package | 软件包安装 |
| MAVEN_SETTINGS_XML |
要使用的自定义 Maven | - | /home/jboss/.m2/settings.xml |
| NO_PROXY | 可直接访问的主机、IP 地址或域的逗号分隔列表。这将用于 Maven 构建和 Java 运行时。 | - | foo.example.com,bar.example.com |
| S2I_ARTIFACTS_DIR | 用于工件的位置挂载与 save-artifacts 脚本保留,与增量构建一起使用。这不应该被最终用户覆盖。 | - |
|
| S2I_DESTINATION_DIR |
S2I 挂载的根目录,如 | - |
|
| S2I_ENABLE_INCREMENTAL_BUILDS | 不要删除源和中间构建文件,以便可以保存它们以用于未来的构建。 | true | true |
| S2I_IMAGE_SOURCE_MOUNTS |
在源目录中以逗号分隔的相对路径列表,它们应包含在镜像中。列表可以包含通配符,这些通配符将使用 find 进行扩展。默认情况下,挂载目录的内容与源文件夹类似,其中 | - |
|
| S2I_SOURCE_CONFIGURATION_DIR |
有关要复制到产品配置目录的目录的相对路径,请参阅 | 配置 | 配置 |
| S2I_SOURCE_DATA_DIR |
有关要复制到产品数据目录的目录的相对路径,请参阅 | data | data |
| S2I_SOURCE_DEPLOYMENTS_DIR |
包含要复制到产品部署目录的目录的相对路径,请参阅 | 部署 | 部署 |
| S2I_SOURCE_DIR | 要构建源代码的位置。这不应该被最终用户覆盖。 | - | ${S2I_DESTINATION_DIR}/src} |
| S2I_TARGET_CONFIGURATION_DIR |
复制到 | - | /opt/eap/standalone/configuration |
| S2I_TARGET_DATA_DIR |
在 | - | /opt/eap/standalone/data |
| S2I_TARGET_DEPLOYMENTS_DIR |
在 | - | /deployments |
| http_proxy | HTTP 代理的位置。这优先于 HTTP_PROXY,用于 Maven 构建和 Java 运行时。 | - | |
| https_proxy | HTTPS 代理的位置。这优先于 HTTPS_PROXY、http_proxy 和 HTTP_PROXY,用于 Maven 构建和 Java 运行时。 | - | myuser:mypass@127.0.0.1:8080 |
| no_proxy | 可直接访问的主机、IP 地址或域的逗号分隔列表。这优先于 NO_PROXY,用于 Maven 构建和 Java 运行时。 | - | *.example.com |
| prefix_MAVEN_MIRROR_ID | 用于指定镜像的 ID。如果省略,会生成一个唯一 ID。 | - | internal-mirror |
| prefix_MAVEN_MIRROR_OF | 通过此条目镜像的存储库 ID。 | external:* | - |
| prefix_MAVEN_MIRROR_URL | 镜像的 URL。 | - | |
| prefix_MAVEN_REPO_DIRECTORY_PERMISSIONS | Maven 存储库目录权限。 | - | 775 |
| prefix_MAVEN_REPO_FILE_PERMISSIONS | Maven 存储库文件权限。 | - | 664 |
| prefix_MAVEN_REPO_HOST | Maven 存储库主机(如果没有使用完全定义的 URL),它将回退到服务。 | - | repo.example.com |
| prefix_MAVEN_REPO_ID | Maven 存储库 ID. | - | my-repo-id |
| prefix_MAVEN_REPO_LAYOUT | Maven 存储库布局. | - | default |
| prefix_MAVEN_REPO_NAME | Maven 存储库名称。 | - | my-repo-name |
| prefix_MAVEN_REPO_PASSPHRASE | Maven 存储库密码短语。 | - | maven1! |
| prefix_MAVEN_REPO_PASSWORD | Maven 存储库密码。 | - | maven1! |
| prefix_MAVEN_REPO_PATH | Maven 存储库路径(如果没有使用完全定义的 URL),它将回退到服务。 | - | /maven2/ |
| prefix_MAVEN_REPO_PORT | Maven 存储库端口(如果没有使用完全定义的 URL),它将回退到服务。 | - | 8080 |
| prefix_MAVEN_REPO_PRIVATE_KEY | Maven 存储库私钥。 | - | ${user.home}/.ssh/id_dsa |
| prefix_MAVEN_REPO_PROTOCOL | Maven 存储库协议(如果没有完全定义的 URL),它将回退到服务。 | - | http |
| prefix_MAVEN_REPO_RELEASES_CHECKSUM_POLICY | Maven 存储库发布 checksum 策略。 | - | warn |
| prefix_MAVEN_REPO_RELEASES_ENABLED | 启用 Maven 存储库发行版本。 | - | true |
| prefix_MAVEN_REPO_RELEASES_UPDATE_POLICY | Maven repository 发行更新策略。 | - | always |
| prefix_MAVEN_REPO_SERVICE | 如果未指定 prefix_MAVEN_REPO_URL,可以查找 Maven 存储库服务。 | - | buscentr-myapp |
| prefix_MAVEN_REPO_SNAPSHOTS_CHECKSUM_POLICY | Maven 存储库快照校验和策略。 | - | warn |
| prefix_MAVEN_REPO_SNAPSHOTS_ENABLED | 启用 Maven 存储库快照。 | - | true |
| prefix_MAVEN_REPO_SNAPSHOTS_UPDATE_POLICY | Maven 存储库快照更新策略。 | - | always |
| prefix_MAVEN_REPO_URL | Maven 存储库 URL(完全定义)。 | - | |
| prefix_MAVEN_REPO_USERNAME | Maven 存储库用户名。 | - | mavenUser |
5.3.1. 使用默认值配置环境变量
以下配置环境变量指定了可覆盖的默认值。
表 5.4. 使用默认值配置环境变量
| 变量名称 | 描述 | Defaul 值 |
|---|---|---|
| AB_JOLOKIA_AUTH_OPENSHIFT |
切换到 OpenShift TLS 通信的客户端身份验证。此参数的值可以是相对可区分名称,它必须包含在出示客户端的证书中。启用此参数将自动将 Jolokia 切换到 HTTPS 通信模式。默认 CA 证书设置为 | true |
| AB_JOLOKIA_HTTPS |
切换到与 HTTPS 的安全通信。默认情况下,如果在 AB_JOLOKIA_OPTS 中未提供 | true |
| AB_JOLOKIA_PASSWORD_RANDOM |
确定是否应该生成随机 | true |
| AB_PROMETHEUS_JMX_EXPORTER_CONFIG | 用于 Prometheus JMX 导出器的配置路径。 | /opt/jboss/container/prometheus/etc/jmx-exporter-config.yaml |
| S2I_SOURCE_DEPLOYMENTS_FILTER | 复制部署时要应用空格分开的过滤器列表。默认为 *。 | * |
5.4. 公开端口
下表列出了公开的端口。
| 端口号 | 描述 |
|---|---|
| 8080 | HTTP |
| 8443 | HTTPS |
| 8778 | Jolokia Monitoring |
5.5. Maven 设置
带有 Maven 参数的默认 Maven 设置
MAVEN_ARGS 环境变量的默认值包含 -Dcom.redhat.xpaas.repo.redhatga 属性。此属性使用默认 jboss-settings.xml 文件中的 https://maven.repository.redhat.com/ga/ 存储库激活配置集,该文件位于 OpenShift 镜像的 S2I 中。
当为 MAVEN_ARGS 环境变量指定自定义值时,如果没有指定自定义 source_dir/configuration/settings.xml 文件,则使用镜像中的默认 jboss-settings.xml。
要指定在默认的 jboss-settings.xml 中使用哪些 Maven 存储库,有两个属性:
-
-Dcom.redhat.xpaas.repo.redhatga属性使用 https://maven.repository.redhat.com/ga/ 软件仓库。 -
-Dcom.redhat.xpaas.repo.jbossorg属性使用 https://repository.jboss.org/nexus/content/groups/public/ 存储库。
提供自定义 Maven 设置
要指定自定义 settings.xml 文件和 Maven 参数,请创建 source_dir/configuration 目录,并将 settings'.xml' 文件放在其中。
示例路径应类似于: source_dir/configuration/settings.xml。
更新于 2023-07-19