第 5 章 参考
5.1. Source-to-Image(S2I) 复制链接链接已复制到粘贴板!
Red Hat JBoss Web Server for OpenShift 镜像包括 S2I 脚本和 Maven。
5.1.1. 将 maven 工件存储库镜像与 JWS 用于 OpenShift 复制链接链接已复制到粘贴板!
Maven 存储库包含构建工件和依赖项,如项目 jar、库 jar、插件或任何其他项目特定工件。它还定义了在执行 S2I 构建时从中下载工件的位置。除了使用 Maven Central 存储库 外,一些组织还会部署本地自定义存储库(mirror)。
使用本地镜像的好处是:
- 同步镜像的可用性,这是更接近且更快地进行的。
- 更好地控制存储库内容。
- 有可能在不同团队(开发者、CI)之间共享工件,而无需依赖公共服务器和存储库。
- 改进了构建时间。
Maven 存储库管理器 可以充当镜像的本地缓存。假设存储库管理器已在 http://10.0.0.1:8080/repository/internal/ 外部部署并可访问,S2I 构建可以使用此存储库。要使用内部 Maven 存储库,请将 MAVEN_MIRROR_URL 环境变量添加到应用的构建配置中。
对于新的构建配置,在 oc new-app 或 oc new-build 中使用 --build-env 选项:
对于现有的构建配置:
识别需要
MAVEN_MIRROR_URL变量的构建配置:oc get bc -o name
$ oc get bc -o name buildconfig/jwsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
MAVEN_MIRROR_URL环境变量添加到buildconfig/jws:oc env bc/jws MAVEN_MIRROR_URL="http://10.0.0.1:8080/repository/internal/"
$ oc env bc/jws MAVEN_MIRROR_URL="http://10.0.0.1:8080/repository/internal/" buildconfig "jws" updatedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证构建配置是否已更新:
oc env bc/jws --list buildconfigs jws
$ oc env bc/jws --list # buildconfigs jws MAVEN_MIRROR_URL=http://10.0.0.1:8080/repository/internal/Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用
oc start-build调度应用程序的新构建
在应用构建期间,Maven 依赖项从存储库管理器下载,而不是从默认的公共存储库下载。构建完成后,镜像包含构建期间检索和使用的所有依赖项。
5.1.2. Red Hat JBoss Web Server for OpenShift 镜像中包含的脚本 复制链接链接已复制到粘贴板!
run- 运行 Catalina (Tomcat)
assemble-
使用 Maven 构建源,创建软件包(
.war),并将它移到$JWS_HOME/tomcat/webapps目录。
5.1.3. JWS for OpenShift 数据源 复制链接链接已复制到粘贴板!
数据源有 3 个类型:
-
默认内部数据源: 它们是 PostgreSQL、MySQL 和 MongoDB。这些数据源默认通过 Red Hat Registry 在 OpenShift 上提供,不需要为镜像流配置额外的环境文件。要使数据库发现并用作数据源,请将
DB_SERVICE_PREFIX_MAPPING环境变量设置为 OpenShift 服务的名称。 - 其他内部数据源: 这些数据源默认无法通过 Red Hat Registry 提供,但在 OpenShift 上运行。这些数据源的配置由添加到 OpenShift Secret 的环境文件提供。
- External Datasources : 外部数据源的 OpenShift.Configuration 上运行的数据源由添加到 OpenShift Secret 的环境文件提供。
datasources 环境文件添加到项目的 OpenShift Secret 中。然后,使用 ENV_FILES 环境属性在模板中调用这些环境文件。
数据源会根据某些环境变量的值自动创建。最重要的环境变量是 DB_SERVICE_PREFIX_MAPPING。DB_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 镜像的有效环境变量是:
| 变量名称 | 显示名称 | Description | 值示例 |
|---|---|---|---|
| ARTIFACT_DIR | N/A |
此目录中的 | 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/ |