第 5 章 参考


5.1. Source-to-Image(S2I)

Red Hat JBoss Web Server for OpenShift 镜像包括 S2I 脚本和 Maven。

Maven 存储库包含构建工件和依赖项,如项目 jar、库 jar、插件或任何其他项目特定工件。它还定义了在执行 S2I 构建时从中下载工件的位置。除了使用 Maven Central 存储库 外,一些组织还会部署本地自定义存储库(mirror)。

使用本地镜像的好处是:

  • 同步镜像的可用性,这是更接近且更快地进行的。
  • 更好地控制存储库内容。
  • 有可能在不同团队(开发者、CI)之间共享工件,而无需依赖公共服务器和存储库。
  • 改进了构建时间。

Maven 存储库管理器 可以充当镜像的本地缓存。假设存储库管理器已在 http://10.0.0.1:8080/repository/internal/ 外部部署并可访问,S2I 构建可以使用此存储库。要使用内部 Maven 存储库,请将 MAVEN_MIRROR_URL 环境变量添加到应用的构建配置中。

对于新的构建配置,在 oc new-appoc new-build 中使用 --build-env 选项:

$ oc new-app \
 https://github.com/jboss-openshift/openshift-quickstarts.git#master \
 --image-stream=jboss-webserver<version>-openjdk8-tomcat9-openshift-rhel7:latest\*
 --context-dir='tomcat-websocket-chat' \
 --build-env MAVEN_MIRROR_URL=http://10.0.0.1:8080/repository/internal/ \
 --name=jws-wsch-app
Copy to Clipboard Toggle word wrap

对于现有的构建配置:

  1. 识别需要 MAVEN_MIRROR_URL 变量的构建配置:

    $ oc get bc -o name
    
    buildconfig/jws
    Copy to Clipboard Toggle word wrap
  2. MAVEN_MIRROR_URL 环境变量添加到 buildconfig/jws

    $ oc env bc/jws MAVEN_MIRROR_URL="http://10.0.0.1:8080/repository/internal/"
    
    buildconfig "jws" updated
    Copy to Clipboard Toggle word wrap
  3. 验证构建配置是否已更新:

    $ oc env bc/jws --list
    
    # buildconfigs jws
    MAVEN_MIRROR_URL=http://10.0.0.1:8080/repository/internal/
    Copy to Clipboard Toggle word wrap
  4. 使用 oc start-build调度应用程序的新构建
注意

在应用构建期间,Maven 依赖项从存储库管理器下载,而不是从默认的公共存储库下载。构建完成后,镜像包含构建期间检索和使用的所有依赖项。

run
运行 Catalina (Tomcat)
assemble
使用 Maven 构建源,创建软件包(.war),并将它移到 $JWS_HOME/tomcat/webapps 目录。

5.1.3. JWS for OpenShift 数据源

数据源有 3 个类型:

  1. 默认内部数据源: 它们是 PostgreSQL、MySQL 和 MongoDB。这些数据源默认通过 Red Hat Registry 在 OpenShift 上提供,不需要为镜像流配置额外的环境文件。要使数据库发现并用作数据源,请将 DB_SERVICE_PREFIX_MAPPING 环境变量设置为 OpenShift 服务的名称。
  2. 其他内部数据源: 这些数据源默认无法通过 Red Hat Registry 提供,但在 OpenShift 上运行。这些数据源的配置由添加到 OpenShift Secret 的环境文件提供。
  3. External Datasources : 外部数据源的 OpenShift.Configuration 上运行的数据源由添加到 OpenShift Secret 的环境文件提供。

datasources 环境文件添加到项目的 OpenShift Secret 中。然后,使用 ENV_FILES 环境属性在模板中调用这些环境文件。

数据源会根据某些环境变量的值自动创建。最重要的环境变量是 DB_SERVICE_PREFIX_MAPPINGDB_SERVICE_PREFIX_MAPPING 为数据源定义 JNDI 映射。这个变量允许的值是以逗号分隔的 POOLNAME-DATABASETYPE=PREFIX triplets 列表,其中:

  • POOLNAME 用作数据源中的 pool-name。
  • DATABASETYPE 是要使用的数据库驱动程序。
  • PREFIX 是用于配置数据源的环境变量名称中使用的前缀。

对于 DB_SERVICE_PREFIX_MAPPING 环境变量中定义的每个 POOLNAME-DATABASETYPE=PREFIX triplet,启动脚本会创建一个单独的数据源,该数据源在运行镜像时执行。

有关数据源配置环境变量的完整列表,请参阅 此处提供的数据源配置环境变量列表。

5.1.4. 用于 OpenShift 兼容环境变量的 JWS

可通过将环境变量包含 Source-to-Image build 命令(请参阅 第 5.1.1 节 “将 maven 工件存储库镜像与 JWS 用于 OpenShift”)来修改构建配置。Red Hat JBoss Web Server for OpenShift 镜像的有效环境变量是:

Expand
变量名称显示名称Description值示例

ARTIFACT_DIR

N/A

此目录中的 .war.ear、和 .jar 文件将复制到 deployments 目录中

target

APPLICATION_NAME

应用程序名称

应用程序的名称

jws-app

CONTEXT_DIR

上下文目录

构建 Git 项目中的路径;根项目目录为空

tomcat-websocket-chat

GITHUB_WEBHOOK_SECRET

GitHub Webhook Secret

GitHub 触发器 secret

表达式包括:[a-zA-Z0-9]{8}

GENERIC_WEBHOOK_SECRET

通用 Webhook Secret

通用构建触发器 secret

表达式包括:[a-zA-Z0-9]{8}

HOSTNAME_HTTP

自定义 HTTP 路由主机名

http 服务路由的自定义主机名。为默认主机名留空

<application-name>-<project>.<default-domain-suffix>

HOSTNAME_HTTPS

自定义 HTTPS 路由主机名

https 服务路由的自定义主机名。为默认主机名留空

<application-name>-<project>.<default-domain-suffix>

IMAGE_STREAM_NAMESPACE

镜像流命名空间

安装 Red Hat Middleware 镜像的 ImageStreams 的命名空间

openshift

JWS_HTTPS_SECRET

Secret 名称

包含证书文件的 secret 名称

jws-app-secret

JWS_HTTPS_CERTIFICATE

证书名称

secret 中的证书文件的名称

server.crt

JWS_HTTPS_CERTIFICATE_KEY

证书密钥名称

secret 中证书密钥文件的名称

server.key

JWS_HTTPS_CERTIFICATE_PASSWORD

证书密码

证书密码

P5ssw0rd

JWS_ADMIN_USERNAME

JWS Admin Username

JWS Admin 帐户用户名

ADMIN

JWS_ADMIN_PASSWORD

JWS 管理密码

JWS Admin 帐户密码

P5sw0rd

SOURCE_REPOSITORY_URL

Git 存储库 URL

应用程序的 Git 源 URI

https://github.com/jboss-openshift/openshift-quickstarts.git

SOURCE_REPOSITORY_REFERENCE

Git 参考

Git 分支/标签参考

1.2

IMAGE_STREAM_NAMESPACE

镜像流命名空间

安装 Red Hat Middleware 镜像的 ImageStreams 的命名空间

openshift

MAVEN_MIRROR_URL

Maven Mirror URL

用于配置的 Maven 镜像/存储库管理器的 URL。

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat