在 Red Hat build of OpenJDK 11 中使用 Source-to-image for OpenShift


Red Hat build of OpenJDK 11

Red Hat Customer Content Services

摘要

Red Hat build of OpenJDK 11 是 Red Hat Enterprise Linux 平台上的红帽产品。在 Red Hat build of OpenJDK 11 中使用 Source-to-image for OpenShift 提供了 S2I for OpenShift 概述,并解释了如何在 Red Hat build of OpenJDK 11 中使用 S2I for OpenShift。

提供有关红帽构建的 OpenJDK 文档的反馈

要报告错误或改进文档,请登录到 Red Hat JIRA 帐户并提交问题。如果您没有 Red Hat Jira 帐户,则会提示您创建一个帐户。

流程

  1. 单击以下链接 以创建 ticket
  2. Summary 中输入问题的简短描述。
  3. Description 中提供问题或功能增强的详细描述。包括一个指向文档中问题的 URL。
  4. Submit 创建问题,并将问题路由到适当的文档团队。

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息

第 1 章 OpenShift 的 source-to-image 简介

OpenShift Container Platform 提供了一个 Source-to-image (S2I)过程来构建和运行应用程序。您可以在构建器镜像(如 JBoss EAP)之上附加应用的源代码。S2I 流程构建应用程序并将其分层到构建器镜像之上,以创建应用镜像。构建应用程序镜像后,您可以将其推送到 OpenShift 中的 集成 registry独立 registry

通过 S2I 用于 OpenShift,您可以在 OpenShift 上的容器化镜像中构建并运行基本 Java 应用,如 fat-jarflat classpath

1.1. 镜像流定义

默认情况下,Red Hat OpenShift Container Platform 包含包含红帽构建的 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.111.12 等。

其他资源

第 2 章 开始前

初始设置

创建 OpenShift 实例。如需有关如何创建 OpenShift 实例的更多详细信息,请参阅 OpenShift 容器平台安装概述

版本兼容性和支持

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 流程。

流程

  1. 运行以下命令并提供您的凭证来登录到 OpenShift 实例:

    $ oc login
  2. 创建一个新项目

    $ oc new-project <project-name>
  3. 使用 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'
  4. 获取服务名称:

    $ oc get svc
  5. 将服务作为路由公开,以便您可以从浏览器中使用服务器:

    $ oc expose svc/ --port=8080
  6. 获取路由:

    $ oc get route
  7. 使用 URL 在浏览器中访问应用。使用上一命令输出中的 HOST/PORT 字段的值。

其他资源

3.2. 从二进制工件构建和部署 Java 应用程序

您可以使用二进制源功能在 OpenShift 上部署现有的 Java 应用。

该流程使用 undertow-servlet quickstart 在本地机器上构建 Java 应用程序。quickstart 使用 S2I 二进制源功能将生成的二进制 Artifacts 复制到 OpenShift 中。

先决条件

  • 在本地机器上启用 Red Hat 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 应用数据的目录层次结构。

    在本地文件系统和 deployments/ 子目录上为二进制构建创建一个主目录。将构建的 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/

流程

  1. 运行以下命令并提供您的凭证来登录到 OpenShift 实例:

    $ oc login
  2. 创建一个新项目

    $ oc new-project jdk-bin-demo
  3. 创建新的二进制构建,并指定镜像流和应用程序的名称:

    $ 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'
  4. 启动二进制构建。

    指示 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
  5. 根据构建创建新的 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.
  6. 将服务作为路由公开。

    $ oc expose svc/jdk-us-app
    route "jdk-us-app" exposed
  7. 获取路由:

    $ oc get route
  8. 使用 URL (上一命令输出中的 HOST/PORT 字段的值)访问浏览器中的应用程序。

其他资源

  • 使用 二进制源 功能在 OpenShift 上部署现有的 Java 应用。
  • 有关如何配置 maven 存储库的更多信息,请参阅使用 Maven 存储库

第 4 章 OpenShift 上 S2I 的工作流示例

4.1. 为 OpenShift 镜像远程调试 Java 应用

该流程中的示例显示,使用 S2I for OpenShift 镜像对 OpenShift 上部署的 Java 应用进行远程调试。您可以通过将环境变量 JAVA_DEBUG 的值设置为 trueJAVA_DEBUG_PORT 设置为 9009 来启用该功能。

注意

如果 JAVA_DEBUG 变量设为 true,并且没有为 JAVA_DEBUG_PORT 变量提供值,则 JAVA_DEBUG_PORT 默认设为 5005

为部署准备

流程

  1. 运行以下命令并提供您的凭证来登录到 OpenShift 实例:

    $ oc login
  2. 创建一个新项目

    $ oc new-project js2i-remote-debug-demo
Deployment

您可以为新的和现有应用程序启用远程调试。

为新应用程序启用远程调试

流程

  • 使用 S2I 用于 OpenShift 镜像和示例 Java 源代码创建一个新应用。在创建应用程序前,请确保设置 JAVA_DEBUGJAVA_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

    继续 将本地调试端口连接到 pod 上的端口

为现有应用程序启用远程调试

流程

  1. 切换到适当的 OpenShift 项目:

     $ oc project js2i-remote-debug-demo
  2. 检索 deploymentconfig 的名称:

    $ oc get dc -o name
     deploymentconfig/openshift-quickstarts
  3. 编辑 deploymentconfig 并添加 JAVA_DEBUG=trueJAVA_DEBUG_PORT=9009 环境变量。
  4. 指定在路径 .spec.template.spec.containersContainer 类型下编辑的对象:

    $ oc edit dc/openshift-quickstarts
    注意

    在终端中启动编辑器,以运行 oc edit 命令。您可以通过定义环境的 EDITOR 变量来更改启动的编辑器。

继续 将本地调试端口连接到 pod 上的端口

post-deployment
将本地调试端口连接到 pod 上的端口

流程

  1. 获取运行应用的 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
  2. 使用 OpenShift 或 Kubernetes 端口转发功能来监听本地端口并转发到 OpenShift 容器集上的端口。<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 容器集的端口 9009

重要

该命令可能会阻止您在终端中进一步输入。在这种情况下,启动一个新终端来执行后续步骤。

将调试器附加到应用程序

流程

  1. 将本地系统上的调试器附加到 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 命令。

  2. 调试应用程序:

    $ 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
    >

其他资源

4.2. 为 OpenShift 在 source-to-image 上运行扁平类路径 JAR

该流程中的示例描述了在 OpenShift 的 S2I 上运行扁平类路径 java 应用程序的过程。

准备部署

流程

  1. 通过提供您的凭证来登录 OpenShift 实例:

    $ oc login
  2. 创建一个新项目

    $ oc new-project js2i-flatclasspath-demo
Deployment

流程

  1. 使用 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

流程

  1. 获取服务名称:

    $ oc get svc
  2. 将服务作为路由公开,以便从浏览器中使用它:

    $ oc expose svc/openshift-quickstarts --port=8080
  3. 获取路由:

    $ oc get route
  4. 使用 URL (上一命令输出中的 HOST/PORT 字段的值)访问浏览器中的应用程序。

第 5 章 参考

5.1. 版本详情

下表列出了此镜像中使用的技术版本。

表 5.1. 此镜像中使用的技术版本
技术版本

Red Hat build of OpenJDK

11

Jolokia

1.6.2

Maven

3.6

5.2. 信息环境变量

以下信息环境变量旨在传达有关镜像的信息。不要修改这些变量。

表 5.2. 信息环境变量
变量名称

HOME

/home/jboss

JAVA_HOME

/usr/lib/jvm/java-11

JAVA_VENDOR

openjdk

JAVA_VERSION

11

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 参考手册中所述)。如果没有设置,将使用手册中定义的设置创建 /opt/jolokia/etc/jolokia.properties。否则,本文档中的其余设置将被忽略。

-

/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。

$HOSTNAME

openjdk-app-1-xqlsj

AB_JOLOKIA_OFF

如果设置禁用 Joloka 激活(即,回显空值)。

启用了 Jolokia

true

AB_JOLOKIA_OPTS

要附加到代理配置中的附加选项。它们应该使用 key=value,key=value,…​ 格式指定。

-

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 带宽控制 中所述。

-

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_proxyHTTP_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 应用的参数。

-

-

JAVA_CLASSPATH

要使用的类路径。如果没有提供,启动脚本会检查文件 JAVA_APP_DIR/classpath,并以字面方式使用其内容作为 classpath。如果此文件不存在 app dir 中的所有 jar,则会添加类:JAVA_APP_DIR/)。

-

-

JAVA_DEBUG

如果设置了远程调试,则会打开。

false

true

JAVA_DEBUG_PORT

用于远程调试的端口。

5005

8787

JAVA_DIAGNOSTICS

将其设置为在运行命令期间将一些诊断信息输出到标准输出。

false

true

JAVA_INITIAL_MEM_RATIO

JAVA_OPTS 中没有 -Xms 选项时,会使用它。这用于根据最大堆内存计算默认初始堆内存。如果容器中使用了没有内存约束的容器,则此选项不会起作用。如果有内存约束,则 -Xms 被设置为 -Xmx 内存的比率,如此处设置。默认值为 25,即 -Xmx 的 25% 用作初始堆大小。您可以通过将这个值设置为 0 来跳过此机制,在这种情况下,不会添加 -Xms 选项。

25

25

JAVA_LIB_DIR

包含 Java jar 文件的目录以及包含 classpath 的可选类路径文件。作为单行类路径(分隔)或者使用 jar 文件(一行列出)如果没有设置 JAVA_LIB_DIR,则设置为 JAVA_APP_DIR 的值。

JAVA_APP_DIR

-

JAVA_MAIN_CLASS

用作 java 参数的主要类。当给出此环境变量时,JAVA_APP_DIR 中的所有 jar 文件都会添加到类路径以及 JAVA_LIB_DIR 中。

-

com.example.MainClass

JAVA_MAX_INITIAL_MEM

JAVA_OPTS 中没有 -Xms 选项时,会使用它。这用于计算初始堆内存的最大值。如果容器中使用了没有内存约束的容器,则此选项不会起作用。如果有内存约束,则 -Xms 仅限于此处设置的值。默认值为 4096,这意味着计算的 -Xms 的值永远不会大于 4096。此变量的值以 MB 表示。

4096

4096

JAVA_MAX_MEM_RATIO

JAVA_OPTS 中不提供 -Xmx 选项时,会使用它。这用于根据容器限制计算默认最大堆内存。如果容器中使用了没有内存约束的容器,则此选项不会起作用。如果有内存约束,则 -Xmx 设置为容器可用内存的比率,如此处设置。默认值为 50,这意味着 50% 的可用内存被用作上限。您可以通过将这个值设置为 0 来跳过此机制,在这种情况下,不会添加 -Xmx 选项。

50

-

JAVA_OPTS

传递给 java 命令的 JVM 选项。

-

-verbose:class

JAVA_OPTS_APPEND

要附加到 JAVA_OPTS 中生成的选项的用户指定的 Java 选项。

-

-Dsome.property=foo

LOGGING_SCRIPT_DEBUG

设置为 true 以启用脚本调试。弃用 SCRIPT_DEBUG.

true

True

MAVEN_ARGS

调用 Maven 时使用的参数,替换 默认软件包 hawt-app:build -DskipTests -e。确保您运行 hawt-app:build 目标(当还没有绑定到 软件包 执行阶段),否则启动脚本将无法正常工作。

package 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 存储库会在工件构建后被删除。这可用于将创建的应用镜像的大小缩小到小,但可防止 增量构建。将被 S2I_ENABLE_INCREMENTAL_BUILDS 覆盖。

false

-

MAVEN_LOCAL_REPO

用作本地 Maven 存储库的目录。

-

/home/jboss/.m2/repository

MAVEN_MIRRORS

如果设置,则启用多镜像支持,其他 MAVEN_MIRROR Block 变量将作为前缀。例如,DEV_ONE_MAVEN_URLQE_TWO_MAVEN_MIRROR_URL

-

dev-one,qe-two

MAVEN_MIRROR_URL

用于检索工件的镜像的基本 URL。

-

http://10.0.0.1:8080/repository/internal/

MAVEN_REPOS

如果设置了多存储库支持,则启用多存储库支持,其他 MAVEN_REPO Block 变量将作为前缀。例如,DEV_ONE_MAVEN_REPO_URLQE_TWO_MAVEN_REPO_URL

-

dev-one,qe-two

MAVEN_S2I_ARTIFACT_DIRS

要扫描构建输出的源目录的相对路径,该路径将复制到 $DEPLOY_DIR

target

target

MAVEN_S2I_GOALS

使用 Maven 构建执行的以空格分隔的目标列表。例如,mvn $MAVEN_S2I_GOALS

package

软件包安装

MAVEN_SETTINGS_XML

要使用的自定义 Maven settings.xml 文件的位置。

-

/home/jboss/.m2/settings.xml

NO_PROXY

可直接访问的主机、IP 地址或域的逗号分隔列表。这将用于 Maven 构建和 Java 运行时。

-

foo.example.com,bar.example.com

S2I_ARTIFACTS_DIR

使用 save-artifacts 脚本保留工件的位置挂载,这些脚本与增量构建一起使用。这不应该被最终用户覆盖。

-

${S2I_DESTINATION_DIR}/artifacts}

S2I_DESTINATION_DIR

S2I 挂载的根目录,如 io.openshift.s2i.destination 标签指定。这不应该被最终用户覆盖。

-

/tmp

S2I_ENABLE_INCREMENTAL_BUILDS

不要删除源和中间构建文件,以便保存它们以用于将来的构建。

true

true

S2I_IMAGE_SOURCE_MOUNTS

源目录中应包含的相对路径列表,这些路径应包含在镜像中。列表可以包括通配符,这些通配符使用 find 进行扩展。默认情况下,挂载的目录的内容与源文件夹类似处理,其中 $S2I_SOURCE_CONFIGURATION_DIR$S2I_SOURCE_DATA_DIR$S2I_SOURCE_DEPLOYMENTS_DIR 的内容被复制到对应的目标目录中。或者,如果 install.sh 文件位于挂载点的根目录中,它将被执行。弃用 CUSTOM_INSTALL_DIRECTORIES.

-

extras/*`

S2I_SOURCE_CONFIGURATION_DIR

包含要复制到产品配置目录的应用程序配置文件的相对路径,请参阅 S2I_TARGET_CONFIGURATION_DIR

配置

配置

S2I_SOURCE_DATA_DIR

包含要复制到产品数据目录的应用程序数据文件的相对路径,请参阅 S2I_TARGET_DATA_DIR

data

data

S2I_SOURCE_DEPLOYMENTS_DIR

指向包含要复制到产品部署目录的目录的相对路径,请参阅 S2I_TARGET_DEPLOYMENTS_DIR

部署

部署

S2I_SOURCE_DIR

要构建源代码的挂载位置。这不应该被最终用户覆盖。

-

${S2I_DESTINATION_DIR}/src}

S2I_TARGET_CONFIGURATION_DIR

复制到 $S2I_SOURCE_DIR $S2I_SOURCE_CONFIGURATION_DIR 的文件的绝对路径。

-

/opt/eap/standalone/configuration

S2I_TARGET_DATA_DIR

复制到 $S2I_SOURCE_DIR/$S2I_SOURCE_DATA_DIR 中的文件的绝对路径。

-

/opt/eap/standalone/data

S2I_TARGET_DEPLOYMENTS_DIR

复制到位于 $S2I_SOURCE_DIR/$S2I_SOURCE_DEPLOYMENTS_DIR 的文件的绝对路径。此外,这是复制构建输出的目录。

-

/deployments

http_proxy

HTTP 代理的位置。这优先于 HTTP_PROXY,用于 Maven 构建和 Java 运行时。

-

http://127.0.0.1:8080

https_proxy

HTTPS 代理的位置。这优先于 HTTPS_PROXYhttp_proxyHTTP_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。

外部:*

-

prefix_MAVEN_MIRROR_URL

镜像的 URL。

-

http://10.0.0.1:8080/repository/internal

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 存储库发行版本更新策略。

-

always

prefix_MAVEN_REPO_SERVICE

Maven 存储库服务,以便在未指定 prefix_MAVEN_REPO_URL 中查找。

-

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 (已定义)。

-

http://repo.example.com:8080/maven2/

prefix_MAVEN_REPO_USERNAME

Maven 存储库用户名。

-

mavenUser

5.3.1. 使用默认值配置环境变量

以下配置环境变量指定了默认值,可以覆盖。

表 5.4. 使用默认值配置环境变量
变量名称描述Defaul 值

AB_JOLOKIA_AUTH_OPENSHIFT

切换到 OpenShift TLS 通信的客户端身份验证。此参数的值可以是相对可分辨名称,它必须包含在提供的客户端的证书中。启用此参数将自动将 Jolokia 切换到 HTTPS 通信模式。默认 CA 证书设置为 /var/run/secrets/kubernetes.io/serviceaccount/ca.crt

true

AB_JOLOKIA_HTTPS

切换到与 HTTPS 的安全通信。默认情况下,如果在 AB_JOLOKIA_OPTS 中未提供 serverCert 配置,则会生成自签名证书。

true

AB_JOLOKIA_PASSWORD_RANDOM

确定是否应该生成随机 AB_JOLOKIA_PASSWORD。设置为 true 以生成随机密码。生成的值将写入 /opt/jolokia/etc/jolokia.pw

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 存储库,有两个属性:

提供自定义 Maven 设置

要指定自定义 settings.xml 文件以及 Maven 参数,请创建 source_dir/configuration 目录,并将设置'.xml' 文件放在其中。

示例路径应类似于: source_dir/configuration/settings.xml

更新于 2024-05-10

法律通告

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.